CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

关于N个同一控件的编写方法!

楼主xiaomuzi7337(小目子弟兵)2005-08-01 16:37:56 在 .NET技术 / C# 提问

我建了一个网页,里面有200多个BUTTON,他们的ID取名是BUTTON1,BUTTON2……BUTTON199,BUTTON200  
  用什么简单的方法能使这些BUTTON的事件都可以触发,  
  不要写成这样子:  
  private   void   BUTTON1_Click(object   sender,   System.EventArgs   e)  
  {  
  }  
  ……  
  ……  
  private   void   BUTTON200_Click(object   sender,   System.EventArgs   e)  
  {  
  }  
  有什么方法吗?  
  或者能将这么多BUTTON换成数组,再进行触发事件,不过知道怎么搞,请高手指点  
  问题点数:100、回复次数:16Top

1 楼wxqq2001(就让我用一生等待)回复于 2005-08-01 16:45:20 得分 8

http://community.csdn.net/Expert/topic/4180/4180440.xml?temp=.8962366Top

2 楼mapserver(杨东 http://mapserver.cnblogs.com)回复于 2005-08-01 16:47:55 得分 5

this.button1.Click   +=   new   System.EventHandler(this.button_Click)  
  this.button2.Click   +=   new   System.EventHandler(this.button_Click)  
  this.button3.Click   +=   new   System.EventHandler(this.button_Click)  
  this.button4.Click   +=   new   System.EventHandler(this.button_Click)  
  .  
  .  
  .  
  this.button200.Click   +=   new   System.EventHandler(this.button_Click)  
   
  在button_Click里去判断是哪个button触发了事件,再做出相应的处理。Top

3 楼pupo(泡泡)回复于 2005-08-01 16:50:39 得分 5

初始化的时候  
  this.button1.Click   +=   new   System.EventHandler(BUTTON1_Click);  
  this.button2.Click   +=   new   System.EventHandler(BUTTON1_Click);  
  this.button3.Click   +=   new   System.EventHandler(BUTTON1_Click);  
  this.button4.Click   +=   new   System.EventHandler(BUTTON1_Click);  
  .  
  .  
  .Top

4 楼xiaomuzi7337(小目子弟兵)回复于 2005-08-01 17:00:23 得分 0

这样子太烦了  
  this.button1.Click   +=   new   System.EventHandler(BUTTON1_Click);  
  this.button2.Click   +=   new   System.EventHandler(BUTTON1_Click);  
  this.button3.Click   +=   new   System.EventHandler(BUTTON1_Click);  
  this.button4.Click   +=   new   System.EventHandler(BUTTON1_Click);  
   
  再好能用数组解决,老兄,有两200个呀  
   
  如果一定要这样,能不能用循环语句写呢,因为都差不多嘛,  
  如果循环语句也不行的话,  
  那么怎样:  
  在button_Click里去判断是哪个button触发了事件,再做出相应的处理?Top

5 楼conan1211(柯楠)回复于 2005-08-01 17:17:43 得分 50

string   sName   =   "button";  
  for   (int   i   =   1;i   <=   200;i++)  
  {  
      Button   mybut   =   this.Controls[1].FindControl(sName+i.ToString());  
      mybut.Click   +=   new   System.EventHandler(this.button_Click);  
  }  
  //这样就给你的200个Button加好事件了不过this.button_Click这个事件就得你自己写了  
  //其中sName+i.ToString()是Button的Name属性的规律,这一部分可以根据实际情况改一下Top

6 楼jialiang(≈≈逆水行舟≈≈)回复于 2005-08-02 13:28:47 得分 2

conan1211(柯楠)   正解Top

7 楼dahaig(HarryPottor)回复于 2005-08-02 14:08:06 得分 2

conan1211(柯楠)   的办法在winform似乎不行  
  winform里有没有类似的方法呢?Top

8 楼conan1211(柯楠)回复于 2005-08-02 15:36:21 得分 5

回复人:   dahaig(HarryPottor)   (   )   信誉:100     2005-08-02   14:08:00     得分:   0      
     
     
        conan1211(柯楠)   的办法在winform似乎不行  
  winform里有没有类似的方法呢?  
       
     
  =================  
  谁告诉你没有啊  
  这不但在WebForm和WinForm就连Java里都有  
  这个东东都一样的啊Top

9 楼conan1211(柯楠)回复于 2005-08-02 15:37:59 得分 0

哦  
  你说的是  
  Button   mybut   =   this.Controls[1].FindControl(sName+i.ToString());  
  这个方法吗?  
  这是当然的了  
  不过在WinForm里也有WinForm里的办法啊Top

10 楼conan1211(柯楠)回复于 2005-08-02 15:43:59 得分 0

在WinForm里可以用  
  for   (int   i   =   0;i   <   this.Controls.Count;i++)//通过循环得到界面上的所有控件  
  {  
  if   (this.Controls[i].Name.StartsWith("btn"))//判断当前控件是不是自己想操作的控件,判断的条件可以通过实际情况来做修改  
  {  
  Button   mybtn   =   (Button   )this.Controls[i];  
  mybtn.Click   +=   new   System.EventHandler(this.button_Click);  
  }  
  }  
  Top

11 楼wuyi8808(空间/IV)回复于 2005-08-02 18:41:55 得分 8

using   System.Windows.Forms;  
   
  class   Test   :   Form  
  {  
      Button   button1,   button2,   button3;  
   
      Test()  
      {  
          button1                 =   new   Button();  
          button1.Parent   =   this;  
          button1.Text       =   "按钮1";  
   
          button2                 =   new   Button();  
          button2.Parent   =   this;  
          button2.Text       =   "按钮2";  
          button2.Top         =   30;  
   
          button3                 =   new   Button();  
          button3.Parent   =   this;  
          button3.Text       =   "按钮3";  
          button3.Top         =   60;  
   
          foreach   (Control   ctl   in   Controls)  
          {  
              if   (ctl   is   Button)  
                  ctl.Click   +=   new   System.EventHandler(BUTTON_Click);  
          }  
      }  
   
      void   BUTTON_Click(object   sender,   System.EventArgs   e)  
      {  
          if   ((Button)sender   ==   button1)  
          {  
              MessageBox.Show("单击了按钮1");  
          }  
          if   ((Button)sender   ==   button2)  
          {  
              MessageBox.Show("单击了按钮2");  
          }  
          if   ((Button)sender   ==   button3)  
          {  
              MessageBox.Show("单击了按钮3");  
          }  
      }  
   
      static   void   Main()  
      {  
          Application.Run(new   Test());  
      }  
  }  
  Top

12 楼wuyi8808(空间/IV)回复于 2005-08-02 18:49:14 得分 8

using   System.Windows.Forms;  
   
  class   Test   :   Form  
  {  
      Test()  
      {  
          const   int   N   =   5;  
          Button   []   button   =   new   Button   [N];  
          for   (int   i   =   0;   i   <   N;   i++)  
          {  
              button[i]                 =   new   Button();  
              button[i].Parent   =   this;  
              button[i].Top         =   28*i;  
              button[i].Text       =   "按钮"   +   (i+1);  
              button[i].Tag         =   i+1;  
              button[i].Click   +=   new   System.EventHandler(BUTTON_Click);  
          }  
      }  
   
      void   BUTTON_Click(object   sender,   System.EventArgs   e)  
      {  
          MessageBox.Show("单击了按钮"   +   ((Button)sender).Tag);  
      }  
   
      static   void   Main()  
      {  
          Application.Run(new   Test());  
      }  
  }  
  Top

13 楼wuyi8808(空间/IV)回复于 2005-08-02 18:58:20 得分 5

using   System.Windows.Forms;  
   
  class   Test   :   Form  
  {  
      Test()  
      {  
          int   N   =   26;     //   总共几个按钮  
          int   n   =   3;       //   每行几个按钮  
          Button   []   button   =   new   Button   [N];  
          for   (int   i   =   0;   i   <   N;   i++)  
          {  
              button[i]                 =   new   Button();  
              button[i].Parent   =   this;  
              button[i].Top         =   28*(i/n);  
              button[i].Left       =   82*(i%n);  
              button[i].Text       =   "按钮"   +   (i+1);  
              button[i].Tag         =   i+1;  
              button[i].Click   +=   new   System.EventHandler(BUTTON_Click);  
          }  
      }  
   
      void   BUTTON_Click(object   sender,   System.EventArgs   e)  
      {  
          MessageBox.Show("单击了按钮"   +   ((Button)sender).Tag);  
      }  
   
      static   void   Main()  
      {  
          Application.Run(new   Test());  
      }  
  }  
  Top

14 楼sgc8228(开始学习VC,我是被逼的)回复于 2005-08-03 00:54:23 得分 2

顶,学习Top

15 楼conan1211(柯楠)回复于 2005-08-03 09:19:27 得分 0

for   (int   i   =   0;i   <   this.Controls.Count;i++)//获取界面上的所有控件  
  {  
  if   (this.Controls[i].Name.IndexOf("btn")   !=   -1)//判断当前控件是不是需要对基操作的控件,这个判断条件可以根据实际情况而定  
  {  
  Button   mybtn   =   (Button)this.Controls[i];  
  mybtn.Click   +=   new   System.EventHandler(this.button_Click);  
  }  
  }  
  Top

16 楼xiaomuzi7337(小目子弟兵)回复于 2005-08-03 11:30:00 得分 0

谢谢大家热心解答!Top

相关问题

  • 怎样编写DBGrid控件?
  • 编写自定义控件
  • 编写控件的问题!
  • 关于控件编写
  • 如何编写word控件?
  • 编写控件的问题
  • 编写控件遇到的问题2
  • 控件编写遇到的问题
  • 编写 OCX 控件的问题
  • Delphi 中如何编写控件?

关键词

  • button
  • click
  • eventhandler
  • 触发
  • 方法
  • 事件

得分解答快速导航

  • 帖主:xiaomuzi7337
  • wxqq2001
  • mapserver
  • pupo
  • conan1211
  • jialiang
  • dahaig
  • conan1211
  • wuyi8808
  • wuyi8808
  • wuyi8808
  • sgc8228

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo