Есть ли способ создать массив кнопок, чтобы вы могли написать обобщенный код

Я новичок в программировании C#, я делаю клавиатуру в своем приложении Windows, я использую текстовое поле в качестве дисплея, поэтому каждая кнопка будет иметь отдельную букву, и нажатие на каждую кнопку будет вводить текст в текстовое поле. так что в моем приложении будет около 50 кнопок. Есть ли способ создать клавиатуру с большим количеством кнопок, чтобы я мог создать массив кнопок, чтобы я мог написать обобщенный код? Возможно ли вообще написать обобщенный код для сотен кнопок? или мне придется редактировать каждую функцию button_click отдельно?

Спасибо!!

Я разместил кнопки отдельно, и я понял, что это займет много времени .... также я открыт для любых новых предложений или даже совершенно нового подхода к этой проблеме...

Если весь код должен это делать, добавьте букву на дисплее кнопок, она может быть одинаковой для всех кнопок, т.е. вы можете подключить их всех к одному и тому же обработчику кликов. Он будет переводить sender в Button, а затем, например. добавьте свой текст в текстовое поле. Текст.. Вы также можете динамически создавать все кнопки, если знаете, как вы хотите их расположить..

TaW 22.05.2019 11:45

Как я могу подключить их всех к одному и тому же обработчику кликов :/ у каждой кнопки будет свой обработчик кликов.. я не совсем понял

Muhammad Sufyan Raza 22.05.2019 11:58

Если кнопки созданы вручную, вы можете сделать это в панели событий. Если не принятый ответ показывает, как это сделать.

TaW 22.05.2019 13:00
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
3
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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);
        }
    }
}

Надеюсь, это поможет направить вас в правильном направлении.

Другие вопросы по теме