Vb.net 每次我离开并重新进入类时,Visual Basic都会将变量重置为0
我有一个表格可以从用户那里获得财务信息,包括贷款金额、利率和期限。我应该叫一个班来做作业,然后把答案返回表格。然而,由于某种原因,每当我的程序移出类,回到窗体,然后回到类,我让类的变量都会重置为0。我的代码如下。任何帮助都会很棒 这是我表格中的代码:Vb.net 每次我离开并重新进入类时,Visual Basic都会将变量重置为0,vb.net,visual-studio-2012,Vb.net,Visual Studio 2012,我有一个表格可以从用户那里获得财务信息,包括贷款金额、利率和期限。我应该叫一个班来做作业,然后把答案返回表格。然而,由于某种原因,每当我的程序移出类,回到窗体,然后回到类,我让类的变量都会重置为0。我的代码如下。任何帮助都会很棒 这是我表格中的代码: 'Preform calculation when button is clicked Private Sub buttonCalc_Click(sender As Object, e As EventArgs) Handles butto
'Preform calculation when button is clicked
Private Sub buttonCalc_Click(sender As Object, e As EventArgs) Handles buttonCalc.Click
Dim loanAmount As New finClass
Dim rate As New finClass
Dim term As New finClass
Dim payment As New finClass
loanAmount.getLoanAmount = textBoxMortgageAmount.Text
rate.getAnnualRate = comboBoxAnnualRate.Text.Replace("%", "")
term.getTermInYears = comboBoxTerm.SelectedItem
textBoxMonthlyPayment.Text = payment.setMonthlyPayment
End Sub
以及关联类中的以下代码:
Public Class finClass
Private loanAmt As Decimal
Private termValue As Decimal
Private rateValue As Decimal
Public paymentValue As Decimal
Public WriteOnly Property getLoanAmount
Set(value)
If IsNumeric(value) AndAlso value > 1000 AndAlso value < 10000000 Then
Me.loanAmt = value
Else
MessageBox.Show("Mortgage amount must be a number between $1,000 and $10,000,000", "Invalid Number", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Set
End Property
Public WriteOnly Property getAnnualRate
Set(value)
rateValue = value.Replace("%", "")
If rateValue < 1 Then
rateValue *= 100
End If
End Set
End Property
Public WriteOnly Property getTermInYears
Set(value)
termValue = value
End Set
End Property
Public ReadOnly Property setMonthlyPayment
Get
Return -Pmt((rateValue / 1200), termValue * 12, Me.loanAmt)
End Get
End Property
End Class
公共类finClass
以十进制表示的私有loanAmt
专用术语值为十进制
以十进制表示的私人差饷租值
以十进制表示的公共支付值
公共WriteOnly属性getLoanAmount
设置(值)
如果IsNumeric(值)和ALSO值>1000,并且ALSO值<10000000,则
Me.loanAmt=值
其他的
MessageBox.Show(“抵押金额必须是介于$1000和$10000000之间的数字”,“无效数字”,MessageBoxButtons.OK,MessageBoxIcon.Error)
如果结束
端集
端属性
Public WriteOnly Property getAnnualRate
设置(值)
rateValue=值。替换(“%”,“”)
如果rateValue<1,则
差饷租值*=100
如果结束
端集
端属性
公共WriteOnly属性getTermInYears
设置(值)
termValue=值
端集
端属性
公共只读属性setMonthlyPayment
得到
返回-付款((费率值/1200),条款值*12,Me.loanAmt)
结束
端属性
末级
我不在VS中工作,但看起来您正在创建该类的四个实例。我很肯定这是不对的
Private Sub buttonCalc_Click(sender As Object, e As EventArgs) Handles buttonCalc.Click
Dim loanAmount As New finClass '## Creates NEW finClass object
Dim rate As New finClass '## Creates NEW finClass object
Dim term As New finClass '## Creates NEW finClass object
Dim payment As New finClass '## Creates NEW finClass object
loanAmount.getLoanAmount = textBoxMortgageAmount.Text
rate.getAnnualRate = comboBoxAnnualRate.Text.Replace("%", "")
term.getTermInYears = comboBoxTerm.SelectedItem
textBoxMonthlyPayment.Text = payment.setMonthlyPayment
End Sub
因此,这些对象中的每一个都是finClass
对象的不同的实例。因此,每次“重新输入”该类时,实际上是在输入该类对象的不同instance,这就是为什么所有变量都是value=0。它们还没有被实例化或设置
请改为尝试创建一个类对象,并使用类模块中的方法对其进行操作:
Private Sub buttonCalc_Click(sender As Object, e As EventArgs) Handles buttonCalc.Click
Dim objFinClass as New finClass
objFinClass.getLoanAmount = textBoxMortgageAmount.Text
objFinClass.getAnnualRate = comboBoxAnnualRate.Text.Replace("%", "")
objFinClass.getTermInYears = comboBoxTerm.SelectedItem
textBoxMonthlyPayment.Text = objFinClass.setMonthlyPayment
End Sub
创建一个模块并使用“Public”对变量进行尺寸标注 公共模块示例 Public example变量为整数 端模块
这将允许变量在程序运行期间保持其值。在窗体类中使用DIM将导致该值在每次加载表单时被重新定义:我会考虑将您的<代码> WraveAuth< <代码>属性改为<代码> StRoAnOngs< /Cor>,<代码> StEngUualReals和
ReadOnly
属性到getMonthlyPayment
。我想我说的方式有点混乱。谢谢你的提示。