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