C#怎么在一个窗体的函数中,调用另一个窗体中的事件。

rt

在Form1中有个单击事件public void toolStripButton_Add_Click(object sender, EventArgs e)

Form2中有个自定义函数:
private void Execute(string command)
{
Form1 f1 = new Form1();
case Constants.AddRowCommand:
{
f1.toolStripButton_Add_Click(null, null);//这儿怎么调用不了Form1中的事件 啊。
break;
}
}

那位高手过来看看,怎么调用别的窗口的事件。。。

有人说用委托。。。求一下代码怎么做。O(∩_∩)O谢谢

toolStripButton_Add_Click不是共有事件,你试试加个public试试。追问

在Form1中有个单击事件public void toolStripButton_Add_Click(object sender, EventArgs e)

已经是了。。。不行,没反应

追答

你把toolStripButton_Add_Click中的代码另外写个方法,记得加public ,既可以在Form1中调用,也可以在其他窗口调用

追问

我刚才我有测试了一下,在Form1中toolStripButton_Add_Click事件中,开头和结尾都加入了messagebox,都可以出来。
说明程序却是执行了Form1中的事件。
但是问题来了,我在form1的中那个click中写的代码是让一个listview增加一行,直接在form1中点击click是正常的。用刚才的方法,在form2中怎么不正常了。。。
求分析原因

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-28
不建议直接调用事件,这样逻辑不太好

Form程序的话,最好是把你的逻辑,操作都做成独立的方法,根据需求设定访问权限

而事件里,仅仅就是调用这些方法而已

当别的窗体需要使用对应的逻辑时只要写
Form1 f1=new Form1();
f1.Show();
f1.xxxx();//你的方法追问

这样,那我早form2中的自定义方法中,意见、可以调用form1中方法?

我等会试试。

要是直接调用form1中的事件的话,怎么做?谢谢

追答

Form1:

public void Button1_Click(Object sender,EventArg e)
{
    //some code;
}

Form2:

public void DoForm1Method()
{
    Form1 frm=new Form1();
    frm.Button1_Click(null,null);
    frm.Show();
}

追问

我写的代码和你的一样。。。
刚才我有测试了一下,在Form1中toolStripButton_Add_Click事件中,开头和结尾都加入了messagebox,都可以出来。
说明程序却是执行了Form1中的事件。
但是问题来了,我在form1的中那个click中写的代码是让一个listview增加一行,直接在form1中点击click是正常的。用刚才的方法,在form2中怎么不正常了。。。
求分析原因

追答

你是想让Form1中的tooStripButton_Add_Click()在Form2中的ListView里添加一个Item?

追问

listview中form1中。

通过form2中的函数,控制form1中listview加一行

追答

我刚才自己写了一个很简单的程序,

Form2上一个文本框

Public void ShowTxt(String str)
{
    TextBox1.Text=str;
}

Form1一个按钮

public void Button1_Click(Object sender,EventArg e)
{
    Form2 f2=new Form2();
    f2.ShowTxt("Hello World");
    f2.Show();
}

经调试是成功的

本回答被提问者和网友采纳
第2个回答  2013-07-15
Form2 fr = new Form2();
fr.事件。。。追问

O(∩_∩)O谢谢

第3个回答  2013-07-16
用委托调用
第4个回答  2013-07-15
最好能把错误提示贴出来
相似回答