2

私はGroupBoxたくさんのを持っていRadioButtonsます。フォーカスがある場合は、上下のキーを使用してそれらを反復できます。

しかし、checked を手動で変更RadioButtonして上下に押すと、checked を変更する前の時点から反復が進行しますRadioButton。質問は次のとおりです。

  • どのコントロールがイベントを処理するかは、RadioButton にフォーカスがあるときの上下キーのクリックに対応します。

回答: TAB、ESC、RETURN、ARROW ボタンのイベントを処理するには、コントロールのメソッドKeyDownをオーバーライドする必要があります。または代わりにIsInputKeyオーバーライドします。ProcessCmdKeyKeyDown

  • 現在チェックされている RadioButton を適切に変更する方法。

回答: 設定のほかにradioButton.Checked = true。それにフォーカスを設定する必要があります - radioButton.Focus()

例: 6 つの RadioButton (0-5) のグループがあります。

  • 現在チェックされているのは RadioButton No.1 です。
  • 私の機能は、チェックされた RadioButton を No.1 から No.3 に変更します。
  • ユーザーが Arrow_Up を押すと、ラジオボタン No.2 ではなく No.0 がチェックされます。
4

3 に答える 3

2
  1. 上/下キーのクリックに対応するイベントは何RadioButtonですか?

    個々の に対応するイベントはありませんRadioButton。キーを離さずに押しても、キー コマンドを処理できます。ProcessCmdKeyただし、フォームが継承したメソッドをオーバーライドできますForm

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        Console.WriteLine("123"); 
        return false; 
    } 
    
  2. グループの内部インデクサーにアクセスするにはRadioButton?

    TabIndex財産。個々の の内部インデックスはありませんRadioButton。しかし、あなたはそれらを である に置き、という名前の継承されたプロパティを持っているので、GroupBoxそれはその子コントロールのコレクションです。ControlControls

例によって提示された問題は、 の問題に現れますTabIndex

ControlWinForm アプリケーションのほとんどのビジュアル コンポーネントの基本クラスです。親/子階層があり、RadioButton上に置くすべてのGroupBoxは同じ親を持ち、GroupBoxそれ自体がこれらの を所有し、インデックスでアクセスできるRadioButtonプロパティを持っています。Controls

于 2013-03-28T08:56:58.187 に答える
1

ユーザーが上/下ボタンを押すと、ラジオボタン間でフォーカスを移動するだけです。Focus()したがって、checked プロパティを設定したボタンのメソッドを呼び出すだけで済みます。true

于 2013-03-28T09:46:22.030 に答える
0

次のように、選択したラジオボタンを取得できます。

RadioButton checkedButton = Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked);

そして、checkChanged イベントをすべてのラジオボタンに追加できます。

これにより、選択されたラジオ ボタンのインデックスが取得されます。

int index = groupBox1.Controls.IndexOf(groupBox1.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked));

これにより、特定のインデックスが選択されます。

groupBox1.Controls.OfType<RadioButton>().ElementAtOrDefault(index).Select();
于 2013-03-28T09:00:55.493 に答える