C# - 将自定义属性/属性添加到新按钮

时间:2017-11-06 16:27:27

标签: c# attributes

我尝试为用户开发一个应用程序,用OS /语言/等创建大量的计算机配置......

当他验证配置时,我希望将选项存储在自定义属性按钮

    private void VALIDATE_Click(object sender, EventArgs e)
            { 

                string Computer = Text_Computer.Text;
                if (myList.Any(str => str.Contains(Computer)))
                {
                    MessageBox.Show(Computer+"Already Exist");
                }
                else
                {
                    Button button = new Button();
                    button.Size = new System.Drawing.Size(195, 30);
                    button.Tag = Computer;
                    button.Name = Computer;
                    button.Text = Computer;
                    button.CustomOS = comboBox_OS.SelectedItem;
                    button.CustomLanguage = comboBox_Language.SelectedItem;
                    flowLayoutPanel3.Controls.Add(button);
                    myList.Add(Computer);
                    MessageBox.Show(Computer + "added");
                }

在我的GUI中,如果用户想要编辑配置,他会点击代表配置的新按钮,所有选项都会返回,如:

comboBox_OS.SelectedItem = button.CustomOS; 
comboBox_Language.SelectedItem = button.CustomLanguage;

是否可以创建我的自定义属性,如button.CustomOS和button.CustomLanguage?

此致

1 个答案:

答案 0 :(得分:1)

这是可能的,也很容易。您只需从原始Button派生一个新类,并声明两个新属性。我将代码包含在一个简单的例子中。

using System;
using System.Windows.Forms;

namespace StackOverflow
{
    public partial class FormMain : Form
    {
        public FormMain()
        {
            InitializeComponent();
        }

        private void cbOS_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Save selection.
            ComboBox cb = (ComboBox)(sender);
            btn1.CustomOS = cb.SelectedItem.ToString();
        }

        private void btnSelect_Click(object sender, EventArgs e)
        {
            //Restore selection on click.
            MyButton btn = (MyButton)(sender);
            cbOS.SelectedItem = btn.CustomOS;
        }

        //Declare a new class deriving from the original Button.
        public class MyButton : Button
        {
            public String CustomOS { get; set; }    
            public String CustomLanguage { get; set; }
        }
    }
}