繁体   English   中英

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

[英]call an event from another event in 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#中的可能吗 感谢所有人,我是事件编程的新手。 对不起,我英语不好

首先, 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更改,但不生成它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM