これは、c# を使用した WinForms にあります。車、バイク、電車、バスなどの 10 個のラジオ ボタンを含むフォームと、「XYZ」というテキストのラベル。すべてが同じグループ ボックスにある。ラジオボタンのチェック時にテキストを非表示にするために、次の一般的な方法を作成しました。
private void Hide_radio(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if (rb != null)
label1.Text="";
}
奇妙なことに、以下の方法 (初期化コンポーネントのすぐ下) のようにイベントを呼び出すと、一部のラジオでのみ機能し、すべてでは機能しません。新しいラジオをドラッグすると、その上で機能します。【ドラッグ&ドロップ厳守。新しいコードの追加または削除はありません。]
foreach (Control gb1c in groupBox1.Controls)
{
if (gb1c is RadioButton)
{
RadioButton rb = gb1c as RadioButton;
rb.CheckedChanged += new MouseEventHandler(Hide_radio);
break;
}
}
designer.cs を確認しましたが、すべての無線のコードは同じです。したがって、基本的に、イベント処理は一部の新しいラジオでのみ機能し、すべてではありません。C# の振る舞いはなぜ幼稚なのか..