我有一个带有一些文本框的表单,并选中从textbox.Depends上的值进行计算复选框中的状态,输出值已更改。同时,我将所有这些数据保存到excel表格中,包括在excel表格中的复选框状态。稍后,我会将这些数据导入到表单中进行进一步计算。因此,当我将值从excel导入表单时,当我将复选框的状态更改为选中时。然后调用Tempmetric_CheckedChanged()函数,它会产生一些错误,因为在这一点上,我没有要计算的所有输入值。我该如何避免这种情况呢?我只有一个想法,在导入函数中设置标志,我将在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”属性有什么区别?
发布于 2016-08-10 22:50:29
两种可能的解决方案:
1)将“临时指标”事件由CheckedChanged改为Click。
2)添加一个全局布尔变量"Importing“,在您从Excel导入的函数中将其设置为"true”,并在CheckedChanged事件中检查此变量。
发布于 2021-06-05 05:39:19
您可以尝试从复选框中删除OnCheckedChanged处理程序,从Excel表格中导入数据,并在复选框上设置checked属性,最后重新分配OnChecked处理程序:
Public Class MyForm
Private Sub ImportButton_Click(...)
RemoveHandler MyCheckbox.CheckChanged, AddressOf Me.MyCheckbox_CheckedChanged
ImportDataAndSetCheckboxs()
AddHandler MyCheckbox.CheckChanged, AddressOf Me.MyCheckbox_CheckedChanged
End Sub
Private Sub ImportDataAndSetCheckboxs()
' ... Do work to import and update checkboxes
End Sub
Private Sub MyCheckbox_CheckedChanged(...) Handles MyCheckbox.CheckedChanged
' ... Whatever work needs to get done here
End Sub
End Class
移除事件处理程序应该会使您可以更新复选框,而不必处理导致错误的事件。
https://stackoverflow.com/questions/38872548
复制相似问题