質問

3つのグループボックスを備えたWinformがあり、1つはコンボボックスが付いており、2つはラジオボタンが付いています。私はそれらのすべてを設定し、その子供は「Tabstop = false」に制御しますが、タブでサイクリングすると、最後の2つのグループボックスのそれぞれに現在選択されているラジオボタンが集中します。

この動作を変更する方法がなければ、焦点をキャッチして動かすのに良いイベントは何でしょうか? 「オンフォーカス」イベントが見つかりません。


解決策は、すべてのラジオボタンの「Enter」イベントをフォームに処理するように1つのメソッド(コード)を設定することです(それが必要な場合)。

実際、私は最初のグループボックスのラジオボタンのためだけにそれをしましたが、それが機能しました、2番目のグループボックスのラジオボタンは、「Enter」イベントが処理されていないにもかかわらず、焦点を獲得しません。これはあなたが期待していたであろう行動ではありません。

private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
   SomeOtherControl.Focus();
}

*.designer.csファイルで、すべてのENTERイベント(各ラジオボタンに対して)を編集して、1つのイベントハンドラー(上記の方法)を指します。

this.radiobutton1Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton2Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton3Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
役に立ちましたか?

解決

のMSDNドキュメント RadioButton.Tabstop 「このAPIは.NETフレームワークインフラストラクチャをサポートしており、コードから直接使用することを意図していません」と述べています。それは基本的に、「これはあなたがそれにどのように期待するかを機能させるつもりはない」という意味です。

とはいえ、ボタンが焦点を受け取ると、Enterイベントが発生します。それを使用して、フォーカスを別のコントロールに移動させることができます。

他のヒント

@msergeantが提案したような追加のオーバーライドなしで、ラジオボタンを実行するまで、コントロールのタブが動作するまでタブストップをラジオボタンでfalseに設定します。

編集

次のコードでは、コードがタブキーイベントを取得するのを防ぎます。

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   radioButton1.TabStop = false;
}

ラジオボタンは、タブインデックスの設定またはグループボックスにラジオボタンを配置することに基づいてセットまたはグループで動作するという点で、他のコントロールのタブに関して異なる動作をします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top