[英]How can I get the checkbox.checked event to fire when I pass it as a parameter in vb.net?
[英]Assign Checkbox.checked value invoke checked event in VB.Net
我有一個帶有一些文本框和復選框的表單。我根據文本框上的值進行計算。取決於復選框狀態,輸出值會發生變化。 同時,我將所有這些數據保存到 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”屬性有什么區別?
兩種可能的解決方案:
1)將“Tempmetric”的事件從CheckedChanged改為Click。
2)添加一個全局布爾變量“Importing”,並在從Excel導入的功能中將其設置為“true”並在CheckedChanged事件上檢查此變量。
您可以嘗試從復選框中刪除 OnCheckedChanged 處理程序,從 Excel 工作表導入數據並在復選框上設置選中的屬性,最后重新分配 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
刪除事件處理程序應該使您可以更新復選框而不必處理導致錯誤的事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.