Winforms Tag属性同时具有两个值

时间:2018-08-12 19:24:15

标签: c# winforms

在创建这样的按钮时,有什么方法可以添加i和j的值? code

PS。对不起屏幕,而不是代码,但是由于某种原因,它不能被接受

code after changes

2 个答案:

答案 0 :(得分:0)

您可以创建一个包含两个值的新结构/类,也可以使用一个元组。

课程

public class ButtonValues
{
    public int i { get; set; }
    public int j { get; set; }
}

Button b = new Button();
b.Tag = new ButtonValues { i = i, j = j };

然后检索它:

ButtonValues val = currentbutton.Tag as ButtonValues;
System.Diagnostics.Debug.WriteLine($"{val.i} {val.j}");

您始终可以用结构替换类。

元组

Button b = new Button();
b.Tag = new Tuple<int, int>(i, j);

然后检索它们:

Tuple<int, int> vals = currentbutton.Tag as Tuple<int, int>;
System.Diagnostics.Debug.WriteLine($"{vals.Item1} {vals.Item2}");

答案 1 :(得分:0)

创建您的类 NewButton ,该类派生自 Windows.Forms.Button 类,并使用 public int i,j属性可以通过创建其对象和Button的所有其他属性来访问它。像下面的按钮代码一样使用

继承

class NewButton : System.Windows.Forms.Button
    {
        public int i{get;set;}
        public int j{get;set;}
    }

在嵌套循环中创建并设置i和j值,而不是5和9

        NewButton buttons = new NewButton();
        buttons.Text = "ButtonText";
        buttons.Name = "ButtonName";
        buttons.i = 5;
        buttons.j = 9;
        this.Controls.Add(buttons);//adding control to form