2011-06-25 6 views
4

ではありません。Visual Studio 2010を使用してC#でアプリケーションを作成しています。プログラムの実行時にラジオボックスが自動的にチェックされますが、それは

ウィンドウの上部に2つのラジオボックスがあり、両方ともChecked = Falseに設定されています。私はコード内のどこでも検索しましたが、なぜそれが何かになる理由はありません。False

ここで、アプリケーションが実行されると、これらの2つのボックス(それぞれRadio1およびRadio2と呼ばれます)の最初のチェックが自動的に開始されました。チェックされているボックスに関連付けられたイベントが存在するため、この問題が発生します。このイベントは、プログラムが開かれるたびに実行されるため、重大な問題が発生します。

誰かがこのボックスが自動的にチェックされている理由を知りましたか?私が言及したように、コードのどこかで、Radio1.Checked = true;がどこかにぶら下がっている場合に備えて、私はどこからでも調べました。しかし、そうではありません。

+0

グループ内の1つのラジオボタンを常にチェックするのが標準です。あなたのラジオボタンが非標準的な振る舞いをする理由がありますか?あなたの技術的な理由がこれの唯一の理由なら、イベントハンドラを接続する前にCheckedプロパティを設定してください。 –

+0

私はコンストラクタで各RadioButton.Checked = falseを設定することでこの問題を回避しました。 – kmdsax

答えて

-2

デザイナ内またはコードを使用してプロパティを設定する場合を除き、このようなことは起こりません。奇妙な。

+4

これはかなり無意味な答えです。私はそれを削除することをお勧めします。 –

8

RadioButtonクラスには、グループの1つがフォーカスを取得し、AutoCheckプロパティがTrueに設定されているときに、グループ内の少なくとも1つのボタンが確認されるようにするコードが含まれています。これは、ラジオボタンの標準的な動作を実装します。非標準的な動作が必要な場合は、AutoCheckプロパティをfalseに設定し、自分で検査を実装する必要があります。

+0

+1、私は同じ答えを書いていました。 –

+0

ありがとうございます、私はこれも調べます。 TabStopをfalseに設定してもこの問題は解決しているようです。 –

+0

これで、ユーザーがフォーカスをボタンに移動するのが難しくなります。 –

0

最初にクリック方法を無効にすることができるように、カウンターメカニズムを使用します。このように

form_load 
    { 
    counter=0; 
    } 
private void rb1_Click(object sender, EventArgs e) 
    { 
     if (counter == 0) { counter++;} 
     else { 
       //Do your stuff 
       } 
    } 
    private void rb2_Click(object sender, EventArgs e) 
    { 
     if (counter == 0) { counter++;} 
     else { 
       //Do your stuff 
       } 
    } 

希望です。

関連する問題