4

私は3つのグループボックス、1つはコンボボックス、2つはラジオボタンを備えたWinFormを持っています。それらすべてとその子コントロールを「TabStop=false」に設定しましたが、TABで循環すると、最後の2つのグループボックスのそれぞれで現在選択されているラジオボタンがフォーカスされます。

この動作を変更する方法がない場合、フォーカスをキャッチして遠ざけるための良いイベントは何でしょうか?「OnFocus」イベントが見つかりません。


解決策は、フォーム内のすべてのラジオボタンの「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);
4

2 に答える 2

7

ラジオボタンでTabStopをFalseに設定して、コントロールへのタブ移動を防ぐには、@msergeantによって提案されたような追加のオーバーライドなしでラジオボタンを実際に選択するまで機能します。

編集

次のコードは、コードがタブキーイベントを取得しないようにします。

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

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

于 2010-08-25T17:00:47.893 に答える
5

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

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

于 2010-08-25T16:40:54.183 に答える