给朋友做的一个关于事件的简单代码,发上来希望对初学者也有些用
作者: 火车头 日期: 2008-10-04 20:15
下载: TestEvent.cs
- public class TestEvent
- {
- public TestEvent()
- {
- }
- //计算1--20的和
- public int caculate()
- {
- int n = 0;
- for (int i = 0; i < 20; i++)
- {
- n += i;
- System.Threading.Thread.Sleep(200);
- OnStateChanged("正在加" + i + " \r\n");
- //System.Threading.Thread.Sleep(200);
- }
- return n;
- }
- public delegate void StateHandler(object sender, StateEventArgs e);
- public event StateHandler StateChanged;
- private void OnStateChanged(string s)
- {
- if (this.StateChanged != null)
- this.StateChanged(this, new StateEventArgs(s));
- }
- }
- public class StateEventArgs : EventArgs
- {
- private string state;
- public string State
- {
- get
- {
- return state;
- }
- }
- public StateEventArgs(string s)
- {
- this.state = s;
- }
- }
用的一个Form的界面(一个label1 和一个button1)
主要调用代码
下载: form1.cs
- delegate void settextcallback(string text);
- private void setlabeltext(string text)
- {
- if (this.label1.InvokeRequired)
- {
- settextcallback se = new settextcallback(setlabeltext);
- this.Invoke(se, new object[] { text });
- }
- else
- {
- this.label1.Text = text;
- }
- }
- public Form1()
- {
- InitializeComponent();
- }
- private void te_StateChanged(object sender,StateEventArgs e)
- {
- setlabeltext(e.State);
- }
- private void button1_Click(object sender, EventArgs e)
- {
- System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(threadfunc));
- th.Start();
- }
- private void threadfunc()
- {
- TestEvent te = new TestEvent();
- te.StateChanged += new TestEvent.StateHandler(te_StateChanged);
- int n = te.caculate();
- MessageBox.Show("结果是" + n.ToString());
- }
Form1里面的 InitializeComponent(); 就不贴了~~~
希望对类里面事件的写法有所帮助
评论: 0 |
引用: 0 |
阅读: 531
发表评论
订阅
上一篇
返回
下一篇