代码之家  ›  专栏  ›  技术社区  ›  PrinceOfBorgo

以编程方式启动事件C#

  •  1
  • PrinceOfBorgo  · 技术社区  · 7 年前

    我在容器里有几个单选按钮。每一个我都有 CheckedChanged 所以我有这样的代码

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if ((sender as RadioButton).Checked)
        // do stuff...
    }
    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        if ((sender as RadioButton).Checked)
        // do stuff...
    }
    private void radioButton3_CheckedChanged(object sender, EventArgs e)
    {
        if ((sender as RadioButton).Checked)
        // do stuff...
    }
    // ... and so on...
    

    那我就得开枪了 检查已更改 当前检查的事件 radioButton .为了得到 单选按钮 我用了这个代码:

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

    现在我怎么能发射 检查已更改 事件 checkedButton 是吗?

    编辑:我正在使用winforms。我的单选按钮在 tabPage .当我打开 制表页 我要知道现在检查的是什么 单选按钮 然后发射相应的 checkedChanged 事件。这是因为当我选择另一个 制表页 我做其他动作,然后,回到 制表页 包含单选按钮,我需要恢复以前的状态。

    1 回复  |  直到 7 年前
        1
  •  2
  •   mm8    7 年前

    更改的值 Checked 属性应触发事件:

    checkedButton .Checked = !checkedButton .Checked;
    

    您也可以显式调用事件处理程序,例如:

    RadioButton checkedButton = container.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked);
    switch (checkedButton.Name)
    {
        case "radioButton1":
            radioButton1_CheckedChanged(this, EventArgs.Empty);
            break;
        case "radioButton2":
            radioButton2_CheckedChanged(this, EventArgs.Empty);
            break;
        case "radioButton3":
            radioButton3_CheckedChanged(this, EventArgs.Empty);
            break;
    }
    

    当然,根据您的要求,您可能需要考虑使用相同的事件处理程序。 RadioButtons 是的。