使用委托和事件在窗体间传递数据
本文是对上一篇随笔的补充。
代码模拟一个邮件客户端的未读已读的功能
Form1的代码:
using System.Windows.Forms;
namespace DelegateAndEvent
{
public partial class Form1 : Form
{
public int index;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.AddRange(new object[] { "未读邮件", "未读邮件", "未读邮件", "未读邮件", "未读邮件"});
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if(listBox1.SelectedItem!=null)
{
string text = listBox1.SelectedItem.ToString();
index = listBox1.SelectedIndex;
var form2 = new Form2(text);
form2.MyEvent +=Operate;
form2.Show();
}
}
private void Operate()
{
listBox1.Items.RemoveAt(index);
listBox1.Items.Insert(index,"已读邮件");
}
}
}
Form2的代码:
using System;
using System.Windows.Forms;
namespace DelegateAndEvent
{
public partial class Form2 : Form
{
public delegate void MyDel();
public event MyDel MyEvent;
public Form2()
{
InitializeComponent();
}
public Form2(string text)
{
InitializeComponent();
this.textBox1.Text = text;
}
private void button1_Click(object sender, EventArgs e)
{
MyEvent();
this.Dispose();
}
}
}
浙公网安备 33010602011771号