2016-08-10 3 views
0

Ich habe ein Formular mit einigen Textfeldern und Kontrollkästchen.Im Ausführen von Berechnung aus den Werten für Textbox.Hängt vom Kontrollkästchen Status die Ausgabewerte werden geändert. gleiche Zeit, im alle diese Daten in Excel-Blatt speichern einschließlich der Checkbox Status in der Excel-Tabelle. Später werde ich diese Daten in das Formular zur weiteren Berechnung importieren. Also, wenn ich die Werte von Excel in das Formular importiere, wenn ich den Status des Kontrollkästchens als aktiviert ändere. Dann wird die Funktion Tempmetric_CheckedChanged() aufgerufen und es entsteht ein Fehler, weil ich zu diesem Zeitpunkt nicht alle Eingabewerte für die Berechnung habe. Wie kann ich das vermeiden? Ich habe nur eine Idee, Flag in Import-Funktion zu setzen, und ich werde dieses Flag in Tempmetric_CheckedChanged() überprüfen, um weitere Arbeit zu vermeiden.Assign Checkbox.checked Wert aufrufen Checked-Ereignis in VB.Net

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 

Gibt es einen anderen möglichen Weg, das zu tun? Was ist der Unterschied zwischen der Eigenschaft 'Checked' und 'CheckState'?

+0

Die Verwendung eines Flags zum Aktivieren/Deaktivieren von Ereignissen in der beschriebenen Weise ist eine Standardtechnik. – peterG

+0

"Checked" kann nur zwei Werte annehmen, die booleschen Werte (true/false), der "CheckState" kann drei Werte haben, checked/unchecked/undeterminate. Die beiden Eigenschaften ändern sich gleichzeitig, checked = true/unchecked = false/indeterminate = true. – Baro

Antwort

0

Zwei mögliche Lösungen:

1) Ändern Sie das Ereignis "Tempmetric" von CheckedChanged zu klicken.

2) Fügen Sie eine globale boolesche Variable "Importieren" hinzu und in Ihrer Importfunktion aus Excel setzen Sie sie vorher auf "true" und überprüfen Sie diese Variable auf das CheckedChanged-Ereignis.

+0

Ich versuchte diese erste Lösung und es funktioniert gut, wie ich wollte. Danke. – Anu