2016-08-10 7 views
0

私はいくつかのテキストボックスとチェックボックスを持つフォームを持っています。テキストボックスの値から計算しています。チェックボックスのステータスで出力値が変更されます。 同じ時間に、これらすべてのデータを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'プロパティの違いは何ですか?

+0

説明する方法でイベントを有効/無効にするフラグを使用することは、標準的な手法です。 – peterG

+0

"Checked"はブール値(true/false)の2つの値のみを取ることができ、 "CheckState"は3つの値を持つことができ、チェック/未チェック/不確定です。同時に2つのプロパティが変更され、checked = true/unchecked = false/indeterminate = trueになります。 – Baro

答えて

0

2つの解決策:

1)をクリックするCheckedChangedから "Tempmetric" のイベントを変更します。

2)グローバル変数boolean "Importing"を追加し、Excelからのインポート関数で "true"に設定してCheckedChangedイベントでこの変数をチェックします。

+0

私はその最初の解決策を試してみました。 – Anu

関連する問題