use*_*394 2 vb.net visual-studio-2012
我有一张表格可以从用户那里获得财务信息,包括贷款金额,费率和期限.我应该打电话给一个班级来完成这项工作,然后将答案返回给表格.但是,出于某种原因,每当我的程序移出类,返回表单,然后返回类,我将类重置为0的变量.我的代码如下.任何帮助都是极好的.
这是我的表格中的代码:
'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
Run Code Online (Sandbox Code Playgroud)
这个代码来自关联类:
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
Run Code Online (Sandbox Code Playgroud)
我不在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
Run Code Online (Sandbox Code Playgroud)
因此,每个对象都是对象的不同实例finClass.因此,每次"重新进入"类时,您实际上都会进入该类对象的不同实例,这就是为什么所有变量都是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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |