C# 委托调用另一个窗体的函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 委托调用另一个窗体的函数相关的知识,希望对你有一定的参考价值。

网上看了一些委托的办法,感觉代码实在太过复杂,还是没有弄清楚委托的写法,请教各位一下具体应该怎么写

比如我这里有一个窗体F2,另一个窗体F1,F2里面进行一些操作,操作完成之后想通过F2上面的“完成”按钮来触发一个委托,到达F1之后调用F1里面的一个func函数对F1进行操作,这样应该如何写委托?请不吝赐教

参考技术A 定义一个委托:这里可以把这个定义看着是定义了一个“类”。
delegate void EventHandler();(假设F1里面的func函数是void func()样式)
1.F2这个窗口对应的类可以这样声明一个事件委托:
public event EventHandler Update;(这里可以看着是声明了一个委托类型的变量)
2.在F2这个窗口类里写一个调用Update的方法:
public void Notify() Update(); (因为事件委托只能在类里面被调用);
3.在F2的“完成”按钮里加入下面代码:
F2(对象).Update += new EventHandler(F1(对象).func);
这样当你点击“完成”按钮就会调用F1里的func函数了。
具体你可以代码调试一下,不一定完全正确:)追问

可是我想问一下,直接调用F1好像不行呢,因为F1只是一个类而已,没有获得它的实例是没办法调用它的函数的,怎么处理?

本回答被提问者采纳
参考技术B 定义一个委托:这里可以把这个定义看着是定义了一个“类”。
delegate void EventHandler();(假设F1里面的func函数是void func()样式)
1.F2这个窗口对应的类可以这样声明一个事件委托:
public event EventHandler Update;(这里可以看着是声明了一个委托类型的变量)
2.在F2这个窗口类里写一个调用Update的方法:
public void Notify() Update(); (因为事件委托只能在类里面被调用);
3.在F2的“完成”按钮里加入下面代码:
F2(对象).Update += new EventHandler(F1(对象).func);
这样当你点击“完成”按钮就会调用F1里的func函数了。
具体你可以代码调试一下,不一定完全正确:)

C#里怎么在一个窗体里调用另一个窗体的控件

设有form1和from2,假如form1调用form2的控件,在form1的代码窗口定义一个form2的对象,把你想要调用的form2的控件的属性Modifier改为Publlic就可以在form2的对象看见了。 参考技术A 窗体类名 你的名字=new 窗体类型();
你的名字.窗体控件
如果窗体控件不显示,则在你想调用的那个窗体里将你想调用的控件设置成public即可显示。
全过程,OVER。
参考技术B 看你想要达到什么效果啦,可以有好好几种实现方式啦 参考技术C 问题说清楚点!

以上是关于C# 委托调用另一个窗体的函数的主要内容,如果未能解决你的问题,请参考以下文章

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

C# 调用函数后窗体假死失去响应

c#如何在一个窗体中调用另一个窗体的数组对象

在C#中,如何在一个窗体中调用另一个窗体的数据?

C#一个窗体调用另一个窗体的方法

C#里怎么在一个窗体里调用另一个窗体的控件