我希望一个简单的C#问题!向按钮添加其他属性

时间:2010-10-27 17:56:38

标签: c# winforms .net-4.0

喜    在Windows窗体上(不是WPF)我在flowlayout上动态创建按钮,我想为它们添加一些属性,只是为了存储其他值(int和string)以及后面使用的按钮。

            Button bn = new Button();
            bn.Text = "mybutton";
            bn.Name = "mybutton";
            toolTip1.SetToolTip(bn, "some tip");
            bn.Location = new Point(200, 200);
            bn.Size = new Size(110, 30);
            bn.BackColor = SystemColors.Control;
            bn.Show();
            flowLayoutPanel1.Controls.Add(bn);

我希望每个按钮存储大约6个值,因为每个按钮都有不同的颜色..

可以这样做吗?

6 个答案:

答案 0 :(得分:8)

对于非强类型信息,您可以使用Tag属性。否则,我认为你必须继承。

答案 1 :(得分:3)

是。您可以将此类数据分配给Button.Tag属性(继承自Control)。此属性的输入为object,因此您可以为其指定任何内容。

替代方案,您可以继承Button

答案 2 :(得分:2)

来自Button:

public class MyButton : Button
{
  public string ExtraProperty {get;set;}
}

就个人而言,我认为这是糟糕的代码。真是糟糕的代码。

答案 3 :(得分:1)

与所有WinForms控件一样,Button也有Tag属性,可用于存储任意对象。

public struct MyButtonData {
    public int myInt;
    public string myString;
}

...

bn.Tag = new MyButtonData() {myInt = 3, myString = "Hello World"};

...

var data = (MyButtonData)bn.Tag;

答案 4 :(得分:0)

你可以:

  • 创建一个从Button派生的控件,并添加其他属性。
  • 创建一个类来封装要分配给每个按钮的数据,实例化该类,然后将控件的“Tag”属性指向实例化的对象。

标记属性是为此目的而设计的。

答案 5 :(得分:0)

在这种情况下,您想要做的是创建自定义控件。使用自定义控件,您可以比使用标准控件更自由。您不仅会继承正在构建自定义控件的现有控件的所有功能。您还可以向自定义控件添加更多功能和属性。

来源: Microsoft - Devloper Network。 https://msdn.microsoft.com/en-us/library/ff723977(v=expression.40).aspx