有没有一种方法来创建按钮数组,以便您可以编写通用代码

时间:2019-05-22 09:41:56

标签: c# arrays button

我对C#编程非常陌生,我在Windows应用程序中制作了一个Keyboard,我使用文本框作为显示内容,因此每个按钮将有一个单独的字母,然后单击每个按钮将进行键入进入文本框。因此我的应用程序上将有50个按钮。有没有一种创建带有更多按钮的KeyPad的方法,所以我可以创建一个按钮数组,以便能够编写通用代码?  甚至可以为100个按钮编写通用代码吗? 还是我必须分别编辑每个button_click函数?

谢谢!!

我分别设置了放置按钮,我意识到这将花费很多时间..我也乐于接受任何新建议,甚至采用全新的方法来解决这个问题...

1 个答案:

答案 0 :(得分:1)

这是一个简单的示例,其中的屏幕包含2个按钮(a和b)。您可以将所有按钮注册到同一单击事件,而不必分别进行每个按钮。

enter image description here

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //loop through all the buttons and assign to btnClick
            var c = GetAll(this, typeof(Button));

            foreach (var item in c)
            {
                item.Click += btnClick;
            }
        }

        private void btnClick(object sender, EventArgs e)
        {
            //The sender is a Button so you find the text and append it to your textbox/output
            txtOutput.Text += ((sender as Button).Text);
        }

        public IEnumerable<Control> GetAll(Control control, Type type)
        {
            var controls = control.Controls.Cast<Control>();

            return controls.SelectMany(ctrl => GetAll(ctrl, type))
                                      .Concat(controls)
                                      .Where(c => c.GetType() == type);
        }
    }
}

希望这有助于指导您正确的方向。