グループボックスに2つのラジオボタンがあり、他のパラメータを設定する別のフォームを呼び出すグループボックスの外にあるボタンを持つ単純なVBネットフォームがあります。ラジオボタンは両方ともシリアルポート経由でデータを送信します。 Form1_loadイベントのブール値はform_loading = True
です。これはrbtnハンドラでチェックされ、trueであればサブルーチンを終了する必要があります。デバッグ時にチェックが変更されても、デザイン時にチェックされているボタンのイベントが1つ発生し、この時点でform_loading
の値はfalseに設定されています。理由はわかりません。 form_loading = false
ステートメントはありません。 rbtnハンドラを削除すると、form_loading = True
は、他のフォームが呼び出されて返されたときにも保持されます。フォームがロードされ、form_loading
の値がfalseに設定されると、rbtn1-CheckChangedが表示されるので、ボタンを含むグループボックスがアクティブになります。 form_loading = True
ステートメントに達する前に、フォームがロードされ始めると、rbtnイベントが発生していると思われますが、ボタンイベントを発生させないようにするにはどうすればいいですか?あなたの助けみんなのラジオボタンはフォームロード時にVBネットで起動します
Serialport is closed, and the code associated with the button is in the buffer to send to a (closed) com port
Private Sub rbtnDon_CheckedChanged(sender As Object, e As EventArgs) Handles rbtnDon.CheckedChanged
If form_loading Then
Exit Sub
ElseIf rbtnDoff.Checked = True Then 'event fires when other button checkchanged = true, this stops it
Exit Sub
Else
data_out = (SOT + "N" + EOT)
SendtoBoard(data_out)
End If
End Sub`enter code here`
_ "Form1_loadイベントにはブール値があります。" _これはわかりません。おそらく 'Form1_load'を含めるべきでしょう。なぜなら、それがそのイベントハンドラ内のローカル変数なら、あなたはここでそれにアクセスするべきではないはずです。初期値は 'true'で、' false'に設定するコードはありません。それで 'rbtnDon_CheckedChanged'に' false'ということは不可能です。 –
フォームの 'New()'メソッドで 'form_loading'変数を設定するか、フォームがロード/アクティブ化された後に' form_loaded'を宣言して 'true'を設定します。 – Arvo
VB.NET IDEはフォームのコンストラクタを隠していますが、それはあなたを助けません。 "Sub New"と入力し、Enterキーを押します。 UIを変更することを検討してください。一般に、ラジオボタンがチェックされたときには何かを行うのは賢明ではありません。したがって、これを行うには、別のボタンのCheckedChangedイベントハンドラを優先します。 –