C# winform 怎样用 委托
实现点击form1中的‘打开’按钮----打开form2----在form2的textbox1中输入值----点击‘传输’按钮----将值传给form1中的textbox...
实现 点击form1中的‘打开’按钮----打开form2----在form2的textbox1中输入值----点击‘传输’按钮----将值传给form1中的textbox1并同时关闭form2
高手指导 O(∩_∩)O谢谢!~~ 展开
高手指导 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 );
首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。
如何使用委托
在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。
声明,如:
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 );
展开全部
你把form1对象作为参数传到form2中,在调用关闭函数前完成赋值操作,在关闭。应该就OK!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
窗口的打开关闭不用说了吧?你把要传的值可以放到全局变量中
追问
是用全局变量做的,但是老有错,现在想用委托,代码应该怎么写?
追答
那就帮不到你了,不好意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在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)
{
}
用法有很多种,这只是其中一种方法。
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)
{
}
用法有很多种,这只是其中一种方法。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询