如果一个控件需要使用委托,委托的方法有2个参数,第一个判断true和false,如果是true label i输出正常,如果是false labeli输出异常 第二个参数 i代表是第几号label 写法如下
public delegate void ShowTime(bool tag,int i);
tag1=true,i=1;//这个是程序的全局变量,已经赋值
Button_click(object sender ,EventArgs e)
{
ShowTime showTime = new ShowTime(Time);
label1.Invoke(showTime,tag1,i1);//Invoke()方法需要一个委托参数,也就是要执行委托方法
}
//委托调用的方法
private void Time(bool tag1int i)
{
if(i==1&&tag==true)
{
label1.text="正常";
}
if(i==1&&tag==false)
{
label1.text="异常";
}
}
我按一下按钮,因为参数是true 和1 所以label1输出正常,,但是如果我有50个label,每一个label都有对应的两个参数,i是1-50,tag1-tag50已经有赋值完成,我的写法是:
public delegate void ShowTime(bool tag,int i);
tag1=true,tag2=false,tag3=false....................tag49=true,tag50=true//这些是程序全局变量,随机
i=1,i2=1,i3=1;.......................i49=49,i50=50;
click(object sender ,EventArgs e)
{
ShowTime showTime = new ShowTime(Time);
label1.Invoke(showTime,tag1,i1);//Invoke()方法需要一个委托参数,也就是要执行委托方法
label2.Invoke(showTime,tag2,i2);
label3.Invoke(showTime,tag3,i3);
...................
label49.Invoke(showTime,tag49,i50);
label49.Invoke(showTime,tag49,i50);/
}
//委托调用的方法
private void Time(bool tag,int i)
{
if(i==1&&tag==true)
{
label1.text="正常";
}
if(i==1&&tag==false)
{
label1.text="异常";
}
if(i==2&&tag==true)
{
label1.text="正常";
}
if(i==1&&tag==false)
{
label2.text="异常";
}
if(i==1&&tag==true)
{
label1.text="正常";
}
if(i==3&&tag==false)
{
label3.text="异常";
}
.......................
.......................
if(i==49&&tag==true)
{
label49.text="正常";
}
if(i==49&&tag==false)
{
label49.text="异常";
}
if(i==50&&tag==true)
{
label50.text="正常";
}
if(i==50&&tag==false)
{
label50.text="异常";
}
}我感觉我这么写是不太对的吧,虽然能实现,但是感觉很奇怪,请指点一下,怎么写更加合理,谢谢。
------解决思路----------------------
请用上数组……然后循环
------解决思路----------------------
累不累,用这个一个方法搞定,http://www.cnblogs.com/slyzly/articles/2121436.html
------解决思路----------------------
this.Invoke?
------解决思路----------------------
父控件refresh?