C# winform 怎样用 委托

实现 点击form1中的‘打开’按钮----打开form2----在form2的textbox1中输入值----点击‘传输’按钮----将值传给form1中的textbox1并同时关闭form2
高手指导 O(∩_∩)O谢谢!~~

什么是委托
  首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。

如何使用委托
  在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。

声明,如:

namespace Vczx.ProCSharp.Exc
{
delegate double MathsOp( double x );
//class defination here
}

  这就声明了一个委托,意义:任何一个返回值为double,且只有一个形参为double的函数,都可以用这个委托来调用。
  注意:委托的声明位置在namespace里面,类的外面。其实,委托的声明也可以在类的里面,甚至是任何一个可以声明类的地方。
  实例化:
  首先我们要先有一个满足委托声明的方法,假设一个返回一个数的2倍的方法:

class MathsOperations
{
public static double MultiplyBy2( double value )
{
return value * 2;
}
}

  有了这样一个方法,我们就可以实例化一个委托了:
MathsOp operation = new MathsOp( MathsOperations.MultiplyBy2 );
  在实例化一个委托时,要给它一个参数,这个参数就是委托执行的方法,它可以是静态方法,也可以是实例方法(这一点有别于函数指针,函数指针只能调用静态方法),如:
MathsOp operation = new MathsOp( new Class1().Method1 );

在实例化完一个委托之后,就可以用这个委托来调用方法了:
double result = operation( 1.23 );
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-26
你把form1对象作为参数传到form2中,在调用关闭函数前完成赋值操作,在关闭。应该就OK!
第2个回答  2012-05-26
窗口的打开关闭不用说了吧?你把要传的值可以放到全局变量中追问

是用全局变量做的,但是老有错,现在想用委托,代码应该怎么写?

追答

那就帮不到你了,不好意思

第3个回答  2012-05-27
在form2中定义一个委托
public void delegate GetTextHandler(object sender,string text);
public static GetTextHandler getTextHandler = null;
private void Button_click(object sender,eventArgs e)
{
if(getTextHandler is not null){
getTextHandler (this,this.textBox.Text.Trim());this.closed();
}
}
在form1里来实例化form2
Form1.getTextHandler =new GetTextHandler (GetText);
private void GetText(object sender,string text)
{

}
用法有很多种,这只是其中一种方法。本回答被提问者采纳
相似回答