【发布时间】:2016-12-16 18:53:23
【问题描述】:
我有一个带有一些文本框和复选框的表单。我正在根据文本框上的值进行计算。取决于复选框状态,输出值会发生变化。 同时,我将所有这些数据保存到 excel 表中,包括复选框状态到 excel 表中。稍后我会将这些数据导入表单以进行进一步计算。因此,当我将值从 excel 导入表单时,当我将复选框的状态更改为选中时。然后调用 Tempmetric_CheckedChanged() 函数并创建一些错误,因为此时我没有所有输入值进行计算。 我怎样才能避免这种情况?只是我有一个想法在 Import 函数中设置标志,我将在 Tempmetric_CheckedChanged() 中检查此标志以避免进一步工作。
Private Sub Tempmetric_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tempmetric.CheckedChanged
If Tempmetric.Checked Then
STempUnit.Text = "F"
FTempunit.Text = "F"
Else
STempUnit.Text = "C"
FTempunit.Text = "C"
End If
Button1_Click(sender, New System.EventArgs()) // i have to use flag before this function call
End Sub
Private Sub SaveBTn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveBTn.Click
Dim metric As Integer
If Tempmetric.Checked Then
metric = 1
Else
metric = 0
End If
xlWorkSheet.Cells(7, 1) = "Metric"
xlWorkSheet.Cells(7, 1).Font.Bold = True
xlWorkSheet.Cells(7, 2) = metric
End Sub
Private Sub ImpInputBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImpInputBtn.Click
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
For rCnt = 1 To range.Rows.Count
SamTemp.Text = xlWorkSheet.Cells(4, 2).Value.ToString
FormTemp.Text = xlWorkSheet.Cells(5, 2).Value.ToString
If xlWorkSheet.Cells(7, 2).Value = 1 Then
Tempmetric.Checked = True
End If
Next
End Sub
还有其他可能的方法吗? 'Checked' 和 'CheckState' 属性有什么区别?
【问题讨论】:
-
使用标志以您描述的方式启用/禁用事件是一种标准技术。
-
“Checked”只能假设两个值,布尔值(true/false),“CheckState”可以有三个值,checked/unchecked/indeterminate。两个属性同时变化,checked=true / unchecked=false / indeterminate=true。