求教!
小弟做了一个界面form1
界面里有几十个开关(很多)
我想实现点击任意一个开关 触发新窗口form2来控制此开关的开关属性
虽然可以用委托的方式实现
但是小弟水平有限,几十个开关小弟就定义了几十个委托
这样不但麻烦,运行还有延迟
有没有比较简单一点的方法呢?
比如可不可用数组的方式呢?
希望给出代码
谢谢

解决方案 »

  1.   

    开关是什么?Button?让所有的Button用同一个事件处理函数,然后判断sender是哪一个就行了
      

  2.   

    就是这么个意思
    问题是"然后判断sender是哪一个就行了"该怎么写?
      

  3.   

    Button btn=(Button)sender;
    switch(btn.Text)
    {
    }
      

  4.   

    比如你有很多Buttonprotected void Form1_Load(object sender , EventArgs e)
    {
        button1.Click += new EventHandler(button_Click);//都使用同一个事件处理
        button2.Click += new EventHandler(button_Click);//都使用同一个事件处理
        button3.Click += new EventHandler(button_Click);//都使用同一个事件处理
        //......等等
    }private void button_Click(object sender , EventArgs e)
    {
        Button btn = sender as Button;
        //根据btn.Name来判断到底是哪一个Button
    }
      

  5.   

    可是我用的不是button,而是添加的Freamwork组件
    而且委托应该怎么该?
    我写的是:
    Form1:
     public bool p;
     private void value01_MouseClick(object sender, MouseEventArgs e)
            {
                开关控制 f1 = new 开关控制();
                f1.refreshFrom1 += new 开关控制.FormRefreshEvent(f1_refreshFrom1);//委托事件1
                f1.i = 0; //表明是value01
                f1.ShowDialog();
            }
            void f1_refreshFrom1(bool p)
            {
                this.value01.state = p;   //p表示开关状态;
            }
    Form2中:
    public int i;
    public delegate void FormRefreshEvent(bool p);
    public event FormRefreshEvent refreshFrom1;
    private void btnYes_Click(object sender, EventArgs e)
            {
                Form1 f1 = new Form1();
                if (this.rbtnOpen.Checked == true)
                {                bool p = true;
                    if (i == 0)//判断是哪一个value;
                    {
                        refreshFrom1(p);  //调用数据 复值给p;
                    }
                    else if (i == 1)
                    {
                        refreshFrom2(p);
                    }
    ........
    }
    }