当前位置: 代码迷 >> C# >> 关于control.invoke的有关问题,如果控件变为50个如何写
  详细解决方案

关于control.invoke的有关问题,如果控件变为50个如何写

热度:102   发布时间:2016-05-05 03:47:46.0
关于control.invoke的问题,如果控件变为50个怎么写?
如果一个控件需要使用委托,委托的方法有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?
  相关解决方案