我正在尝试格式化两个特定的文本框以显示为Sq。在Visual Studio 2019中作为Windows窗体应用程序并使用Visual Basic代码进行计算后,英尺(txt.Squareft.Text)和美国货币(txtTotalprice.Text)。我正在使用.NET Framework v4.7.2和Windows10。按现在的运行方式,文本框中显示的数字只是没有添加Sq的数字。 ft。结尾,并且没有货币格式。我还要补充一点,我对VB和一般编程非常陌生。有任何帮助或建议吗?
Option Explicit On
Option Infer Off
Public Class Form1
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
'Variables
Dim decTotalprice As Decimal
Dim decLength As Decimal
Dim decWidth As Decimal
Dim decPrice As Decimal
Dim decSquareft As Decimal
Decimal.TryParse(txtLength.Text, decLength)
Decimal.TryParse(txtWidth.Text, decWidth)
Decimal.TryParse(txtPrice.Text, decPrice)
Decimal.TryParse(txtSquareft.Text, decSquareft)
txtTotalprice.Text = decTotalprice.ToString("C2")
txtSquareft.Text = decSquareft.ToString("N2") & " Sq. ft."
' Calculate the square feet and total price
txtSquareft.Text = txtLength.Text * txtWidth.Text
txtTotalprice.Text = txtPrice.Text * txtSquareft.Text
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
' Clears all the text fields with button click
txtLength.Clear()
txtWidth.Clear()
txtPrice.Clear()
txtSquareft.Clear()
txtTotalprice.Clear()
End Sub
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
' Exits the form
Me.Close()
End Sub
End Class
这里有两个主要问题,我每天至少要提十遍。首先,您在尝试编写代码时不知道该做什么。您已经考虑了最终结果,但没有考虑达到目标的步骤。如果您这样做了,那么很明显,您的代码将不符合预期。其次,您显然没有调试代码,这是任何人在未获得预期结果时应该做的第一件事。如果您考虑了每一行应该做的事情,那么这也将使您看到代码没有意义。
如果这是手动任务,则您将从用户那里得到输入,执行计算,然后显示结果。那是你在这里做什么?不它不是。首先,您得到用户输入。这是一个开始,但是您做错了。就目前而言,对于任何无效输入,您都将以0结尾,但您只是忽略了这一点。接下来要做的是显示您尚未计算的格式化输出。如果您进行了调试,那么您会发现decTotalprice
和decSquareft
在那时都为零。最后,您进行了计算,但是输入的是原始文本而不是已经解析的数字,然后以未格式化的方式显示结果。您甚至在代码中加了一条注释,说您在显示格式化输出之后就在进行计算。
停止编写代码,并考虑要达到所需结果所需的步骤。解析用户输入,使用数字数据而不是未解析的文本执行计算,然后以格式显示这些结果。一旦明确了要做什么并手动进行了测试,就可以编写代码来实现该算法,而不是脑海中浮现出一些含糊不清的想法,这涉及到最终结果和其他内容。
您当然不是唯一犯这些错误的人,但它们是基本的错误。之所以会发生这种情况,部分原因是在某些情况下教学不好,但也有可能是因为每个人都想跳入性感而有趣的部分,即编写代码,但他们不想做得更努力,但又想像的一样重要考虑代码实际要做的事情。当他们没有得到预期的结果时,他们举起手来就没有真正尝试修复它。如果您没有试图了解代码必须做什么,那么您就可以尝试使它做到这一点。