private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 300; i += 100)
            {
                Button button2 = new Button();
                button2.Location = new Point(i, 100);
                this.Controls.Add(button2);
                button2.Text = "aa";
            }
        }
这样添加的三个按钮为什么不冲突呢 但是我在窗体里面添加三个按钮都叫button2 就会冲突,最后都是添加到Controls集合中,为什么却会出现这种情况呢

解决方案 »

  1.   

    Control Name 不能重复。Button button2 = new Button();
    button2.Location = new Point(i, 100);
    this.Controls.Add(button2);
    button2.Text = "aa";
    MessageBox.Show(button2.Name);
      

  2.   

    name属性在同一容器同一级同一级别下不允许重复的
    MessageBox.Show(button2.Name);
    Application.DoEvents();
      

  3.   

    name属性在同一容器同一级同一级别下不允许重复的
      

  4.   

    同一级别下是可以重复的 不然怎么解释for循环里面的代码啊
      

  5.   

    Name是空置 设置下Name得值一样也是没问题的 
      

  6.   

    但是3个button2的Name是不一样的 而不是你说的这个button2
      

  7.   

    button2是变量名,至于button的name系统自动给你起不同的名字。
      

  8.   

    看了楼主的贴子我震惊了,看到标题的瞬间惊呆了。
    我突然领悟到学习编程是需要想的!
    想!学习.net这么多年,我居然大部分时间都忘了“想”!
    啊~~谢谢楼主~~谢谢楼主~~愿主保佑你!
      

  9.   

    name名字改成一样也没问题呀 我试过了呀 没人知道原因嘛
      

  10.   

    你直接添加的话这样是没问题的,            Button button1 = new Button();
                button1.Location = new Point(100, 120);
                this.Controls.Add(button1);
                button1 = new Button();
                button1.Location = new Point(200, 120);
                this.Controls.Add(button1);
                button1 = new Button();
                button1.Location = new Point(300, 120);
                this.Controls.Add(button1);变量你使用几次都没问题,但是声明只能声明一次,这么说能明白么?
      

  11.   


    你在窗体里托一个button,把Nmae属性命名为“btn1”再托一个button,把name属性也命名为“btn1”,此时会出错……事实证明同一容器里两个控件的名字不能重复,否则在代码里使用btn1,程序不知道你是用的第一个button还是第二个button
      

  12.   

    可能是因为托出来的button vsIDE会生成代码,你for循环里生成的button只是在内存中所以不会报错。
      

  13.   

     Button button2 = new Button();
    你是实例化了button控件,但是这个button的id并不是button2,button2只不过是个对象名,实在不明白,想想类的实例化
      

  14.   


               for (int i = 0; i < 300; i += 100)
                {
                    Button button2 = new Button();
                    button2.Name = "test";
                    button2.Location = new Point(i, 100);
                    this.Controls.Add(button2);
                    button2.Text = "aa";
                }
                for (int i = 0; i < this.Controls.Count; i++)
                {
                    Button bt = this.Controls[i] as Button;
                    MessageBox.Show(bt.Name  +";"+ bt.ToString());
                }
    //那3个其实是一个按钮,只是被拿出来用了3次,放在3个不同的位置
      

  15.   

    当  3个按钮 Name 字符串相同时 编译能通过 但是 你们有没有 运行一下