私はいくつかのテキストボックスとチェックボックスを持つフォームを持っています。テキストボックスの値から計算しています。チェックボックスのステータスで出力値が変更されます。 同じ時間に、これらすべてのデータをExcelシートに保存すると、Excelシートのチェックボックスステータスも含めて保存されます。その後、これらのデータをフォームにインポートしてさらに計算します。だから私はフォームからExcelに値をインポートするとき、私はチェックボックスの状態を変更します。その後、Tempmetric_CheckedChanged()関数が呼び出され、この時点ではすべての入力値が計算されないため、エラーが発生します。 どうしたらいいですか?ちょうど私はインポート関数でフラグを設定する一つのアイデアがあり、私はTempmetric_CheckedChanged()でこのフラグをチェックして、それ以上の作業を避けます。Assign Checkbox.checked value VB.Netでcheckedイベントを呼び出す
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'プロパティの違いは何ですか?
説明する方法でイベントを有効/無効にするフラグを使用することは、標準的な手法です。 – peterG
"Checked"はブール値(true/false)の2つの値のみを取ることができ、 "CheckState"は3つの値を持つことができ、チェック/未チェック/不確定です。同時に2つのプロパティが変更され、checked = true/unchecked = false/indeterminate = trueになります。 – Baro