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

时间:2015-12-28 14:35:19

标签: c#

我在用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#中可行的。感谢所有人,我是新事物编程的新手。抱歉我的英语不好

2 个答案:

答案 0 :(得分:4)

首先,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以获得良好的设计模式。

答案 1 :(得分:1)

听起来你在radioButton1_CheckedChanged中有逻辑,当你点击按钮时 想要调用它。如果是这种情况,则将公共逻辑移动到新方法并从两个位置调用它。

如果您想更改radioButton1的已检查状态,只需更改其状态即可。事件hnadlers 响应到UI更改,他们不会生成