C#中两个窗体间的函数调用
答案:4 悬赏:0 手机版
解决时间 2021-11-22 15:49
- 提问者网友:最美的风景
- 2021-11-22 07:56
C#中两个窗体间的函数调用
最佳答案
- 五星知识达人网友:话散在刀尖上
- 2021-11-22 09:30
你已经跨线程调用控件了,当然无作用也不报错。在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();
}
}
解决思路就这样,代码没有调试过,只是凭印象写的,你试着编译一下。
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();
}
}
解决思路就这样,代码没有调试过,只是凭印象写的,你试着编译一下。
全部回答
- 1楼网友:空山清雨
- 2021-11-22 12:36
凡是窗体间的通信都是采用事件(或者委托:一种特殊的事件)的机制来完成的,因为这才是最佳的方案。像你这样直接调用方法即便有时没有出错也是后患无穷的。
- 2楼网友:十年萤火照君眠
- 2021-11-22 11:52
两个窗口间传值用owner,设置一个窗口A是另外一个窗口B的owner,在把窗口B中的数据传到A中就要把窗口A中的空间的Modifiers设置为public,然后在A中定义一个B,就可以让B中的数据传到窗口A中的控件上
- 3楼网友:蓝房子
- 2021-11-22 11:08
这个问题很好解决的。。。在programe.cs文件中Application.Run(from)的时候,把form在programe里面把form设置成为静态的窗体
publi static form1 form=new form1();
Application.Run(form1);
之后再运行from2之后,就可以在form2里面通过调用 programe.form.(方法名)......来调用 from1里面公开的方法
publi static form1 form=new form1();
Application.Run(form1);
之后再运行from2之后,就可以在form2里面通过调用 programe.form.(方法名)......来调用 from1里面公开的方法
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯