最近做一个程序,牵扯到在进程里面操作控件,程序如下:if (this.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(this.richTextBox1.AppendText);//追加数据
this.BeginInvoke(d, new object[] {temp});
SetTextCallback2 c = new SetTextCallback2(this.richTextBox1.ScrollToCaret);//滚动
this.BeginInvoke(c);
}
else
{
this.richTextBox1.AppendText(temp);
richTextBox1.ScrollToCaret();
}我用的是委托函数,但是如果我用一个控件,要做很多事情,如追加数据,滚动,保存等等?我是不是要每一个属性都要加一个委托函数?能不能做一个委托函数,直接指向这个控件类,然后直接调用这个控件里面的所有事件、属性等?
{
SetTextCallback d = new SetTextCallback(this.richTextBox1.AppendText);//追加数据
this.BeginInvoke(d, new object[] {temp});
SetTextCallback2 c = new SetTextCallback2(this.richTextBox1.ScrollToCaret);//滚动
this.BeginInvoke(c);
}
else
{
this.richTextBox1.AppendText(temp);
richTextBox1.ScrollToCaret();
}我用的是委托函数,但是如果我用一个控件,要做很多事情,如追加数据,滚动,保存等等?我是不是要每一个属性都要加一个委托函数?能不能做一个委托函数,直接指向这个控件类,然后直接调用这个控件里面的所有事件、属性等?
delegate void AddListItem(string item);
private void SetItemAdd(string item)
{
// InvokeRequired需要比较调用线程ID和创建线程ID
// 如果它们不相同则返回true
if (this.listBox1.InvokeRequired)
{
AddListItem d = new AddListItem(SetItemAdd);
this.Invoke(d, new object[] { item });
}
else
{
listBox1.Items.Add(item);
}
}delegate void AddListItem(string item, string item_other);
private void SetItemAdd(string item, string item_other)
{
// InvokeRequired需要比较调用线程ID和创建线程ID
// 如果它们不相同则返回true
if (this.listBox1.InvokeRequired)
{
AddListItem d = new AddListItem(SetItemAdd);
this.Invoke(d, new object[] { item, item_other });
}
else
{
listBox1.Items.Add(item);
listBox1.Items.Add(item_other);
}
}
参数数量可以自己定义的,可以带一个判断参数,这样就知道你当前要做什么事件了