通过 (sender as Button).Name来判断或是其他的

解决方案 »

  1.   

    除了name外...
    有没有其他方法?
      

  2.   


    private void button1_Click(object sender, EventArgs e)
    object sender //谁发起消息的~虽然两个都是Button,但她们是各自属性
    比如id等,所以你找找有什么属性可以区分她们
    通常是id或name之类的
      

  3.   


    定义不同的 tag也可以。
      

  4.   

    两个button在一个form上用相同的text有意思吗?没有的话,用text来区别都行啊
      

  5.   

    最好不要两个Button指向同一事件。
    需要单击两个Button运行同样代码时,最好封装为方法,在不同的事件中调用这个方法。
      

  6.   

    Sender包含有发送者的全部信息,可以轻松通过sender得到button的属性
    ((button)sender).name ... 
    可以做出选择
      

  7.   


    (sender as Button).Name
      

  8.   

    这个逻辑不正常啊 
    2个button名字不一样,双击后生成的事件应该也不会是相同的事件
    除非你是先建立了个button1,然后双击生成了private void button1_Click(object sender, EventArgs e) { } 
    之后又复制了个button2出来,这时其实将button1里的事件也复制出来了你可以在button2的属性页面找事件,清空click事件,重新双击生成新的事件
    private void button2_Click(object sender, EventArgs e) { }
      

  9.   

    只要两个Button有一个可访问属性,而你两个button的不一样,就可以区分出来,类似上面的Name(在一个窗体中,不可重复)
      

  10.   

    (Button)sender.Tag,(Button)sender.Name等等等等……
      

  11.   

    private void button1_Click(object sender, EventArgs e)
    {
    method(1);
    }
    private void button2_Click(object sender, EventArgs e)
    {
    method(2);
    }
    private void method(int num)
    {
    xxxxxxxxx
    }
    为什么不这样呢?费个劲啊!
      

  12.   

    ((button)sender).name
    晕,被别人先答了
    sender就是产生事件的控件,如果是按钮的话,你可以强转为button然后调用里边的name或者text等等一切能区分的属性来进行区分
      

  13.   

    难道你不是用VS找编写的?或者是你的VS没有操作视图?先把 button2原来绑定的事件清除,然后直接重新双击就可以了
      

  14.   

    这个设计不大合理,为何2个按钮都调用同样处理。
    你可以通过sender来得到2个按钮的信息,以此来判断是那个按钮调用。或者,把同样处理的代码封装成方法,方法参数里面有个标识,不同按钮传过来的值不同。不过还是不理解你的设计。
      

  15.   


    判断条件很多的。NAME,Tag,TextInde,Size,Location,Image,BackColor,BackgroundImage,
    Course,Font,ForeColorif (this.button1 != this.button2) { 
      
    }
      

  16.   


    是这样的。这其实就是“大白话”,判断sender是不是button1,而不用判断Name属性。
      

  17.   


    看你的等级也不低的了,怎么能说出这样的话"在一个窗体中,不可重复"; 不要因为设计器编译不通过就说不能重复。 控件的唯一性,绝对不是name,应该是内存中的地址,
    Quote: 引用 22 楼 sp1234 的回复:

    Quote: 引用 15 楼 WM_JAWIN 的回复:
    if (sender ==button1)
    针对你提出的问题 这个方法是比较好的:
      

  18.   


    看你的等级也不低的了,怎么能说出这样的话"在一个窗体中,不可重复"; 不要因为设计器编译不通过就说不能重复。 控件的唯一性,绝对不是name,应该是内存中的地址,如果name可以重复,那么sender ==button1也无法判断.因为2个控件都叫button1
      

  19.   

    button的name属性其实就是button的变量名称,
    这跟int,bool变量其实是一样的
    在同一窗体的同一可见性级别下,变量名称是不能重复的,否则编译器根本无法区分.会提示你此变量已经定义过.
      

  20.   

    如果是动态生成按钮,给你一段代码参考下
    先写出事件处理,根据tag来区分按钮。
    private void Button_Click(object sender, EventArgs e)
    {
        int index = (int)(sender as Button).Tag;
        switch (index)
        {
            default:
                break;
        }
    }
    然后是动态生成按钮并绑定
    private void Form1_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < 10; i++)
        {
            Button btn = new Button()
            {
                Tag = i,
            };
            btn.Click += Button_Click;
            Controls.Add(btn);
        }
    }
      

  21.   


    都说了     "不要因为设计器  编译不过 而不能存在",你代码创建控件, 名称全部一样 ,也包括变量  private void CreateButton()
            {
                for (int i = 0; i < 2; i++)
                {
                    Button btn = new Button();
                    btn.Name = "btn";
                    btn.Click += new EventHandler(btn_Click);
                    //btn.Text = "测试"+i.ToString();
                    btn.Location = new Point(i * 100 + 10, 10);
                    this.Controls.Add(btn);            }
            }        private void btn_Click(object sender, EventArgs e)
            {
                Button btn = sender as Button;
            }