C#中两个窗体间的函数调用

程序中有两个窗口,窗口1中有listview1控件,操作正常,在窗口1中调用窗口2,然后窗口2若干操作后调用窗口1的某个函数如NetPlay(),返回窗口1的NetPla... 程序中有两个窗口,窗口1中有listview1控件,操作正常,在窗口1中调用窗口2,然后窗口2若干操作后调用窗口1的某个函数如NetPlay(),返回窗口1的NetPlay函数,进入正常(NetPlay中的messagebox能弹出)但是我在操作listview1(如listview1.Items.Clear())的时候无法操作,对程序没有任何的反应,但程序没有报错
也就是说,我进入了从窗口1进入窗口2后,在窗口2中调用窗口1的某个函数,该函数其它一切正常,只是在调用窗口1里面的控件的时候没反应(但也没报错),这是什么原因

相关代码 MiniMedia是窗口1的名字 NetMedia窗口2
MiniMedia某函数()
{
NetMedia Dlg = new NetMedia();
Dlg.ShowDialog(this);
}
窗口2中
MiniMedia MiniMediaClass = new MiniMedia();
NetMedia某函数()
{
MiniMediaClass.NetPlay();//此函数是窗口1中的
}
窗口1中的 NetPlay()
{
MessageBox.Show("哈哈");//正常显示
listView1.Items.Clear();//不起作用,不报错,但是在其他函数中使用正常
}
看到楼下有说传值,我需要的不是传值,传值我会,我需要在窗口2中操作大量窗口1里面的函数,而且是反复调用窗口1窗口2的函数,传值太麻烦
展开
 我来答
XieLD2000
推荐于2016-11-13 · 超过16用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:46万
展开全部
你已经跨线程调用控件了,当然无作用也不报错。在Form1中调用当然可以,但在Form2中(另一线程)调用就无效。
delegate ListViewItemClearDelegate();
ListViewItemClearDelegate _dListViewItemClear;
public void Form1_Load()
{
_dListViewItemClear=new ListViewItemClearDelegate(ListViewItemClear);
}
NetPlay()
{
MessageBox.Show("哈哈");//正常显示
ListViewItemClear();
}
public void ListViewItemClear()
{
if(listView1.InvokeRequired)
{
listView1.Invoke(_dListViewItemClea);
}
else
{
listView1.Items.Clear();
}

}
解决思路就这样,代码没有调试过,只是凭印象写的,你试着编译一下。
西三227
2010-05-16 · TA获得超过1168个赞
知道小有建树答主
回答量:473
采纳率:0%
帮助的人:344万
展开全部
凡是窗体间的通信都是采用事件(或者委托:一种特殊的事件)的机制来完成的,因为这才是最佳的方案。像你这样直接调用方法即便有时没有出错也是后患无穷的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dqjkwj1234
2010-05-16 · TA获得超过155个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:309万
展开全部
这个问题很好解决的。。。在programe.cs文件中Application.Run(from)的时候,把form在programe里面把form设置成为静态的窗体

publi static form1 form=new form1();

Application.Run(form1);

之后再运行from2之后,就可以在form2里面通过调用 programe.form.(方法名)......来调用 from1里面公开的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
建暮灬0P
2010-05-16 · 超过24用户采纳过TA的回答
知道答主
回答量:148
采纳率:0%
帮助的人:47.9万
展开全部
两个窗口间传值用owner,设置一个窗口A是另外一个窗口B的owner,在把窗口B中的数据传到A中就要把窗口A中的空间的Modifiers设置为public,然后在A中定义一个B,就可以让B中的数据传到窗口A中的控件上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式