none
怎样获取 Tag 的值 RRS feed

  • 问题

  • 大家好"

    有10 个 Label1~Label10  属性 Tag = 1~10
    只给 label1写事件, 其它的9 个与这事件关联, 请问怎样获取Tag的值,从而确定是那一个label 引发事件的呢? 谢谢

     private void label1_DoubleClick(object sender, EventArgs e)
            {
    
            }


    三界不住,六尘不染
    2009年9月3日 14:15

答案

  • private void label1_DoubleClick(object sender, EventArgs e)
    {
        Label control = (Label)sender;
        object o = control.Tag; // 获取控件的 Tag, 你可以根据你的需要转换成指定的类型
    
        // 根据控件的 Name 来判断
        switch (control.Name)
        {
            case "label1":
                // 你的代码
                break;
            case "label2":
                // 你的代码
                break;
            //.....
        }
    }

    知识改变命运,奋斗成就人生!
    2009年9月3日 14:58
    版主
  • 你好,label1_DoubleClick事件中的sender,就是表示你所引发事件的控件,然后你获取这个控件的Tag属性就可以了。

            private void label1_DoubleClick(object sender, EventArgs e)
            {
                Label LabelControl = sender as Label;
                string TagValue = LabelControl.Attributes["Tag"];
            }
    jon.valett@gmail.com
    2009年9月3日 15:21
    版主
  • 你的应该是WinForm程序吧,要判断是哪个Label触发的事件,不用使用Tag属性,比较麻烦,可以直接这样:
    private void label1_DoubleClick(object sender, EventArgs e)
    {
    
    
        Label label = (Label)sender;
    
    
        switch(label.Name)
       {
    
    
            case "label1":
    
    
                // 你的代码
    
    
    
    
                break;
    
    
            case "label2":
    
    
                // 你的代码
    
    
    
    
                break;
    
    
            //.....
    
    
    
    
        }
    
    
    }

    周雪峰
    2009年9月4日 5:32
    版主

全部回复

  • 你好
    请问 label 触发什么事件?
    参考
    private void label1_DoubleClick(object sender, EventArgs e)
            {

           string s = ((Label)sender).Attributes["Tag"];
           switch (s)
           {
               case "1":
                  s="label1触发";
                   break;
               case "2":
                   s = "label2触发";
                   break;
           }
    • 已编辑 mldark 2009年9月3日 15:27 理解错误
    2009年9月3日 14:30
  • private void label1_DoubleClick(object sender, EventArgs e)
    {
        Label control = (Label)sender;
        object o = control.Tag; // 获取控件的 Tag, 你可以根据你的需要转换成指定的类型
    
        // 根据控件的 Name 来判断
        switch (control.Name)
        {
            case "label1":
                // 你的代码
                break;
            case "label2":
                // 你的代码
                break;
            //.....
        }
    }

    知识改变命运,奋斗成就人生!
    2009年9月3日 14:58
    版主
  • 晕了 原来是winform的啊
    2009年9月3日 15:10
  • 你好,label1_DoubleClick事件中的sender,就是表示你所引发事件的控件,然后你获取这个控件的Tag属性就可以了。

            private void label1_DoubleClick(object sender, EventArgs e)
            {
                Label LabelControl = sender as Label;
                string TagValue = LabelControl.Attributes["Tag"];
            }
    jon.valett@gmail.com
    2009年9月3日 15:21
    版主
  • 你的应该是WinForm程序吧,要判断是哪个Label触发的事件,不用使用Tag属性,比较麻烦,可以直接这样:
    private void label1_DoubleClick(object sender, EventArgs e)
    {
    
    
        Label label = (Label)sender;
    
    
        switch(label.Name)
       {
    
    
            case "label1":
    
    
                // 你的代码
    
    
    
    
                break;
    
    
            case "label2":
    
    
                // 你的代码
    
    
    
    
                break;
    
    
            //.....
    
    
    
    
        }
    
    
    }

    周雪峰
    2009年9月4日 5:32
    版主
  • 楼上回答的是正解。
    但是需要注意的是,在最外层的事件处理程序中,最好使用Try Catch块来捕获异常。除非您对您的代码非常自信。否则容易造成应用程序崩溃。
    Dreamwinter
    2009年9月4日 7:17