开始学习委托,对委托不能理解。仅限于阅读书本上的例子,置于什么时候用委托,怎么用,心里一直不解。机缘巧合,阅读了博友的文章,地址
http://blog.csdn.net/qiujialongjjj/article/details/8229308
有点感悟。自己试着写了个类似的。希望高手们指教。
目的是实现,点击form1上按钮,隐藏form1,然后点击form2上的按钮,让form1显示出来。以下是自己的代码,风格较差,大侠将就看。
form1代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var f2 = new Form2();
//方法 1 事件 f2.changed += new Form2.form2Handle(changeShowOrHide);
f2.f2handle = new Form2.form2Handle(changeShowOrHide); //方法 2 委托
f2.f2changeBtnTextHandle = changeBtnText;
f2.Show();
}
public static int count = 0;
private void button1_Click(object sender, EventArgs e)
{
count++;
if (count%2==0)
{
changeShowOrHide(true);
}
else
{
changeShowOrHide(false);
}
}
private void changeShowOrHide(bool isshow)
{
if (isshow)
{
this.Show();
}
else
{
this.Hide();
}
}
private void changeBtnText(string st)
{
button1.Text = st;
}
}
}
form2代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public delegate void form2Handle(bool b);
public delegate void changeBtnTextHandle(string text);
//方法 1 事件 public event form2Handle changed;
public form2Handle f2handle;//方法 2 委托
public changeBtnTextHandle f2changeBtnTextHandle;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//方法 1 事件 changed(true);
f2handle(true);//方法 2 委托
f2changeBtnTextHandle("隐藏");
Form1.count++;
}
}
}
这应该是委托的一种使用场景。还有什么场景使用,希望大侠不吝赐教!!!