给朋友做的一个关于事件的简单代码,发上来希望对初学者也有些用


下载: TestEvent.cs
  1. public class TestEvent
  2.  {
  3.  public TestEvent()
  4.  {
  5.  }
  6.  //计算1--20的和
  7.  public int caculate()
  8.  {
  9.  int n = 0;
  10.  for (int i = 0; i < 20; i++)
  11.  {
  12.  n += i;
  13.  System.Threading.Thread.Sleep(200);
  14.  OnStateChanged("正在加" + i + " \r\n");
  15.  //System.Threading.Thread.Sleep(200);
  16.  }
  17.  
  18.  return n;
  19.  }
  20.  
  21.  public delegate void StateHandler(object sender, StateEventArgs e);
  22.  public event StateHandler StateChanged;
  23.  private void OnStateChanged(string s)
  24.  {
  25.  if (this.StateChanged != null)
  26.  this.StateChanged(this, new StateEventArgs(s));
  27.  }
  28.  }
  29.  
  30.  public class StateEventArgs : EventArgs
  31.  {
  32.  
  33.  private string state;
  34.  public string State
  35.  {
  36.  get
  37.  {
  38.  return state;
  39.  }
  40.  }
  41.  public StateEventArgs(string s)
  42.  {
  43.  this.state = s;
  44.  }
  45.  }


用的一个Form的界面(一个label1 和一个button1)
主要调用代码

下载: form1.cs
  1. delegate void settextcallback(string text);
  2.  private void setlabeltext(string text)
  3.  {
  4.  if (this.label1.InvokeRequired)
  5.  {
  6.  settextcallback se = new settextcallback(setlabeltext);
  7.  this.Invoke(se, new object[] { text });
  8.  }
  9.  else
  10.  {
  11.  this.label1.Text = text;
  12.  }
  13.  }
  14.  
  15.  
  16.  public Form1()
  17.  {
  18.  InitializeComponent();
  19.  }
  20.  
  21.  
  22.  private void te_StateChanged(object sender,StateEventArgs e)
  23.  {
  24.  setlabeltext(e.State);
  25.  }
  26.  
  27.  private void button1_Click(object sender, EventArgs e)
  28.  {
  29.  System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(threadfunc));
  30.  th.Start();
  31.  }
  32.  private void threadfunc()
  33.  {
  34.  TestEvent te = new TestEvent();
  35.  te.StateChanged += new TestEvent.StateHandler(te_StateChanged);
  36.  int n = te.caculate();
  37.  MessageBox.Show("结果是" + n.ToString());
  38.  }






Form1里面的 InitializeComponent(); 就不贴了~~~
希望对类里面事件的写法有所帮助


引用通告地址: 点击获取引用地址
评论: 0 | 引用: 0 | 阅读: 531
发表评论
昵 称: 密 码:
网 址: 邮 箱:
验证码: 验证码图片 选 项:
头 像:
内 容: