Присвоить одинаковому событию всех контролов на форме одинаковый код
Цитата: Константин от 01.06.2023, 01:54Привет. Когда то я искал способ создать comboCheckedBox, но не один из вариантов меня не устроил. Сделал свой костыльный вариант. textBox с расположенным под ним CheckedListBox который скрыт по умолчанию но отображается и скрывается по клику на textBox. Но этого недостаточно.
Можно ли как то приписать ВСЕМ контролам на форме, и самой форме событие MouseClick с коротким кодом
CheckedListBox1.Visible = false;
На форме у меня есть label, textBox, checkBox, comboBox и кнопки. В дальнейшем возможно появятся и другие контролы, и прописывать КАЖДОМУ контролу события MouseClick мне кажется слишком неуместным. Какие варианты можно применить?
Привет. Когда то я искал способ создать comboCheckedBox, но не один из вариантов меня не устроил. Сделал свой костыльный вариант. textBox с расположенным под ним CheckedListBox который скрыт по умолчанию но отображается и скрывается по клику на textBox. Но этого недостаточно.
Можно ли как то приписать ВСЕМ контролам на форме, и самой форме событие MouseClick с коротким кодом СкопированоCheckedListBox1.Visible = false;
На форме у меня есть label, textBox, checkBox, comboBox и кнопки. В дальнейшем возможно появятся и другие контролы, и прописывать КАЖДОМУ контролу события MouseClick мне кажется слишком неуместным. Какие варианты можно применить?
Цитата: Константин от 01.06.2023, 02:20Возможно я поторопился создавать вопрос. Нашел решение. Я создал всего одно событие Form1_MouseClick с нужным мне кодом, а потом привязал это же событие ко всем остальные контролам. Это решает задачу на данный момент но может создать неприятности в будущем если я создам новый контрол но забуду привязать к нему это событие.
Все еще спрашиваю, есть ли какой то полностью автономный способ это провернуть? Что б ко всем контролам на форме автоматически привязывалось событие Form1_MouseClick, за исключением тех случаев когда я не создаю для них отдельное уникальное событие MouseClick
Возможно я поторопился создавать вопрос. Нашел решение. Я создал всего одно событие Form1_MouseClick с нужным мне кодом, а потом привязал это же событие ко всем остальные контролам. Это решает задачу на данный момент но может создать неприятности в будущем если я создам новый контрол но забуду привязать к нему это событие.
Все еще спрашиваю, есть ли какой то полностью автономный способ это провернуть? Что б ко всем контролам на форме автоматически привязывалось событие Form1_MouseClick, за исключением тех случаев когда я не создаю для них отдельное уникальное событие MouseClick
Цитата: Никита от 01.06.2023, 04:31Константин, Привет!
Если что
[spoiler title="Вот"]new List<Control> { textbox1, this, button1 }.ForEach(x => { x.MouseUp += (s, a) => { CheckedListBox1.Visible = false; }; });[/spoiler]
Создаешь лист из контролов (в фигурных скобках просто укажи все нужные тебе контролы для взаимодействия) и для каждого из них применяется твой "false"
Естественно, чтобы этот код начал работать, нужно его прописать либо следующей строкой после InitializeComponent(); либо добавить в Form1_Load
Константин, Привет!
Если что
new List<Control> { textbox1, this, button1 }.ForEach(x =>
{
x.MouseUp += (s, a) =>
{
CheckedListBox1.Visible = false;
};
});
Создаешь лист из контролов (в фигурных скобках просто укажи все нужные тебе контролы для взаимодействия) и для каждого из них применяется твой "false"
Естественно, чтобы этот код начал работать, нужно его прописать либо следующей строкой после InitializeComponent(); либо добавить в Form1_Load