首页 新闻 会员 周边

如何使用委托实现textbox显示

0
悬赏园豆:20 [已解决问题] 解决于 2012-04-11 14:49

form1.cs里有个方法showText(string msg)

class1.cs里想通过委托 showText 显示

要怎么写?

hwqqxczx的主页 hwqqxczx | 初学一级 | 园豆:52
提问于:2012-03-05 11:24
< >
分享
最佳答案
0

再给你个示例:

Form1.cs部分代码:

 //定义委托
public delegate bool CompareDelegate(int a, int b);
public class MyCompare
{
///<summary>
/// 定义一个方法,符合上面定义的委托所要求的方法细节,返回值为bool型,两个参数分别为int型
///</summary>
///<param name="x"></param>
///<param name="y"></param>
///<returns></returns>
public static bool CompareMethod(int x, int y)
{
bool result = x > y ? true : false;
return result;
}
}
class Program
{
static void Main(string[] args)
{
//实例化委托并初始化。注意初始化时候,必须包含一个方法的名称,而且这个方法必须符合最初定义委托时候的签名(参数类型和返回值)
CompareDelegate myDelegate = new CompareDelegate(MyCompare.CompareMethod);
//现在我们使用委托实例来比较两个数a和b的的大小
int a = 10;
int b = 15;
bool isBigger = myDelegate(a, b);
Console.WriteLine(" a > b ?: " + isBigger);
Console.Read();
}
}

应用在WinForm跨窗体执行函数

注意:要想实现跨窗体执行函数,那么函数必须定义成公共静态函数:
就是把private改成public static
如本代码中的 public static bool CompareMethod(int x, int y)
如果函数需要操作窗体内的控件,那么该控件也需要定义成公共静态。
方法:例如窗体上有个dataGridView1控件,那么打开Form1.Designer.cs,
找到:private System.Windows.Forms.DataGridView dataGridView1
改成:public static System.Windows.Forms.DataGridView dataGridView1
 
Form2部分代码:
Form1.CompareDelegate myDelegate = new Form1.CompareDelegate(Form1.MyCompare.CompareMethod);

PS:Form1里面的CompareMethod函数可以不放在MyCompare类里面,那么上句代码就可以这样写:

Form1.CompareDelegate myDelegate = new Form1.CompareDelegate(Form1.CompareMethod);

来源:http://cosky.blogbus.com/logs/52818003.html

收获园豆:20
artwl | 专家六级 |园豆:16736 | 2012-03-05 11:51
其他回答(2)
0
public Action<String> ShowMessage;
public class1(form1 f1)
{
ShowMessage+=f1.showText;
}
today4king | 园豆:3499 (老鸟四级) | 2012-03-05 11:44
0

    public delegate void DelegateShow(string msg);定义委托

   DelegateShow md = new DelegateShow(showText);

    md ("显示信息");也可以用事件。

青牛客 | 园豆:562 (小虾三级) | 2012-03-05 11:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册