从c#中的另一个事件调用一个事件

本文关键字:事件 一个 调用 另一个 | 更新日期: 2023-09-27 18:28:19

我在用c#编程时有一个问题。我想从这样的另一个事件调用一个事件。

private void button1_Click(object sender, EventArgs e)
    {
        Form2 formulario = new Form2();
        formulario.ShowDialog();
// here i call an event from the second form. that event is radiobutton_checkedchange
formulario.radioButton1_CheckedChanged(sender, e);

问题是,我到处寻找如何解决这个问题。。。他们告诉我,一个事件就像一个方法,但我认为这不一样,因为当我像方法一样调用该事件时,看起来我只调用了一次。事件无法识别已检查的更改。

我错了吗?这在c#中可行吗。感谢大家,我是新编程的活动。很抱歉我的英语不好

从c#中的另一个事件调用一个事件

首先,radioButton1_CheckedChanged不是一个事件,它可能是一个事件处理程序。最终,它仍然是一种与其他方法一样的方法。

您不应该直接调用事件的事件处理程序,只需创建另一个方法和调用内容即可。将此放入您的Form2:

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{ // private, only accessible from the class itself
    this.SetState();
}
public void SetState()
{ // public, accessible from anywhere
    // put your original code from radioButton1_CheckedChanged here
}

这样,您就不必调用特定于事件的代码,但您可以将其写在一个单独的方法中,这样更容易使用,目的也更明确。

如果两个表单共享相同的数据对象/视图模型,则可以从中设置值。从OOP的角度来看,这会更好在MVVM或MVC中寻找好的设计模式。

听起来radioButton1_CheckedChanged中有逻辑,您希望在单击按钮时调用该逻辑。如果是这种情况,那么将公共逻辑移到一个新方法中,并从两个位置调用它。

如果您想更改radioButton1的检查状态,那么只需更改其状态即可。事件hnadlers响应UI更改,而不是生成