15

groupBoxにいくつかのradionButtonがあり、「radiobuttons.checkedchangedの1つ」と呼ぶことができるアクションを実行するか、radiobuttonからどのインデックスが変更されたかを確認する必要があります。イベントのリストで見つけようとしましたが、正しいものが見つかりませんでした。

編集: より明確にするために:単一のラジオボタンではなく、goupBoxのハンドラーメソッドを作成するためのハンドルが存在するかどうかを知る必要があります。radiButton.checkedChangedの使用方法は知っていますが、見つけたものではありません。または、このgroupBox内で何が発生するかを監視する際にgroupBoxにどのオプションがあるかを知る必要があります。つまり、groupBoxのハンドラーのみを意味します。「グループボックス内で何かが発生している」または類似のハンドラーが存在する場合は、それを見つけています。

Visual Studio 2012 のWFA(Windowsプレゼンテーションアプリケーション)にあります。

4

12 に答える 12

41

あなたがやりたいことは、すべての RadioButtons の CheckedChanged イベントを同じハンドラーに接続することだと思います。

public Form1()
{
    radioButton1.CheckedChanged += new EventHandler(radioButtons_CheckedChanged);
    radioButton2.CheckedChanged += new EventHandler(radioButtons_CheckedChanged);

    // ...
}

private void radioButtons_CheckedChanged (object sender, EventArgs e)
{
    RadioButton radioButton = sender as RadioButton;

    if (radioButton1.Checked)
    {
        // Do stuff 
    }
    else if (radioButton2.Checked)
    {
        // Do other stuff
    }
}
于 2012-06-22T16:56:44.213 に答える
5

私が知る限り、そのために組み込まれたものは何もありません。

tag プロパティをある種のインジケータ (0 から n) に設定します。

CheckChangedHandler を追加する

すべてのボタンの CheckChanged イベントをポイントします。

それから何か。

private void radioButtons_CheckedChanged (object sender, EventArgs e) 
{     
  RadioButton radioButton = sender as RadioButton;      
  int buttonid = (int)radioButton.Tag;
  switch (buttonid)
  {
    case 0 : // do something; break
  }
} 

これらのいくつかをお持ちの場合は、ラジオグループ コンポーネントを検討します。

于 2012-06-22T17:02:35.727 に答える
5

同じ問題がありました。6 つのラジオ ボタンを持つButton Type (gbxButtonType)という名前のグループ ボックスと、8 つのラジオ ボタンを持つIcon Type (gbxIconType)という名前の別のグループ ボックスです。ユーザーが各グループ ボックスから 1 つのラジオ ボタンを選択すると、DisplayButtonをクリックした後に選択内容が適用された MessageBox が表示されます。私の問題は、グループ ボックスに CheckedChanged イベントがないことでした。AKN のソリューションは完全に機能しました。

public Form1()
    {
        InitializeComponent();

        for (int i = 0; i < gbxButtonType.Controls.Count; i++)
        {
            RadioButton rdb = (RadioButton)gbxButtonType.Controls[i];
            rdb.CheckedChanged += new System.EventHandler(gbxButtonType_CheckedChanged);
        }

        for (int i = 0; i < gbxIconType.Controls.Count; i++)
        {
            RadioButton rdb = (RadioButton)gbxIconType.Controls[i];
            rdb.CheckedChanged += new System.EventHandler(gbxIconType_CheckedChanged);
        }
    }

private void gbxIconType_CheckedChanged(object sender, EventArgs e)
    {
        if (sender == rdbAsterisk)
        {
            iconType = MessageBoxIcon.Asterisk;
        }
        else if (sender == rdbError)
        {
            iconType = MessageBoxIcon.Error;
        }
        ...
        else
        {
            iconType = MessageBoxIcon.Warning;
        }
   }
于 2013-10-17T13:34:22.777 に答える
2

System.Windows.Forms.RadioButton.CheckedChanged

必要なイベントです

したがって、次のようにします。

    public Form1()
    {
        InitializeComponent();

        this.radioButton1.CheckedChanged += new EventHandler(radioButton1_CheckedChanged);
    }

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        // your action
    }
于 2012-06-22T16:55:22.107 に答える
1

//Jock Frank Halliday の厚意による

     //^subscribe events to radio button check changed 
    private void seriesTxtBxEvent()
    {
        //Show txtBx
        this.radBtn_RoomSeries.CheckedChanged += new EventHandler(showSeriesTxtBx_Event);
        //Hide txtBx
        this.radBtn_RoomNumber.CheckedChanged += new EventHandler(hideSeriesTxtBx_Event);
        this.radBtn_RoomName.CheckedChanged += new EventHandler(hideSeriesTxtBx_Event);
        this.radBtn_RoomLevel.CheckedChanged += new EventHandler(hideSeriesTxtBx_Event);
        this.radBtn_RoomDep.CheckedChanged += new EventHandler(hideSeriesTxtBx_Event);
    }



    private void hideSeriesTxtBx_Event(object sender, EventArgs e)
    {
        tbx_SheetSeries.Visible = false;
    }


    private void showSeriesTxtBx_Event(object sender, EventArgs e)
    {
        tbx_SheetSeries.Visible = true;
    }
于 2016-01-12T11:11:08.357 に答える