Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1

Смена фокуса после клика любой кнопки на форме

10.01.2014, 07:33. Показов 5727. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, господа.

Передо мной стоит простая задачка - зафокусить определенный контрол после клика на любую кнопку (только кнопка, и никакой другой контрол). Подскажите, пожалуйста, самое идеальное решение.

В голову только приходит одна идея: при помощи АОП на выходе из метода обработчика менять фокус. Но как определить нужный обработчик из MethodInfo пока идей нет, но это другой вопрос.

Заранее благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.01.2014, 07:33
Ответы с готовыми решениями:

Смена кнопок на форме после нажатия определенной кнопки
Есть три кнопки : Удалить, редактировать и изменить. Как можно сделать чтобы на форме акцесса форма обновлялась с другими кнопками....

Смена фокуса в messagebox с кнопки да, на кнопку отмена
Как сделать что бы при вызове messagebox, он появлялся с фокусом на кнопке отмена, а не кнопке да?

Удаление любой кнопки на форме
Подскажите, пожалуйста! Мне нужно на форме удалить нопку. Порядок действий таков: я нажимаю на определенную кнопку, потом выбираю какую...

8
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
10.01.2014, 08:50
Правильно ли я понял, нажимаем на кнопку - фокусится, например, другая кнопка?
C#
1
2
3
4
        private void button2_Click(object sender, EventArgs e)                      // Обработчик кнопки2
        {
            button3.Select();
        }
Так, нет?
0
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
10.01.2014, 09:08  [ТС]
Цитата Сообщение от es_ Посмотреть сообщение
Так, нет?
Именно так. Я ищу решение которое позволит не прописывать селект в обработчик каждой кнопки.
0
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
10.01.2014, 10:05
Особых причин для решения данной проблемы я лично не вижу..
прописывать селект в обработчик каждой кнопки, для меня было бы достаточным..
Ещё могу предложить способ, но он только усложняет решение: в дизайнере для каждой кнопки помимо основного обработчика, типа:
C#
1
this.button1.Click += new System.EventHandler(this.button1_Click);
добавить ещё
C#
1
this.button1.Click += new System.EventHandler(this.select);
select - это название нашего метода:
C#
1
2
3
4
        private void select(object sender, EventArgs e)
        {
            button3.Select();
        }
То есть как бы у кнопки будет два обработчика, один из которых выполняет селект нужного нам контрола.. Но это имхо бред..
0
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
10.01.2014, 10:31  [ТС]
Вот я и ищу адекватный способ решения задачи.
Причина в большом количестве форм (100+) и количестве кнопок на форме (до 50). Да и дальнейшее создание форм, а точнее контроль за выполнением этой задачи другими программистами, считаю очень трудозатратным.
0
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
10.01.2014, 10:43
Понятно, ну вот тогда в продолжении моей мысли, можно сделать так:
C#
1
2
3
4
5
6
7
8
9
10
11
        public Form1()                                                              // Создание Формы
        {
            InitializeComponent();                                                  // Инициализация Компонентов
            for (int i=0;i<Controls.Count;i++)
            {
                if (Controls[i].Name.IndexOf("button")!=-1)
                {
                    Controls[i].Click += new System.EventHandler(select);
                }
            }
        }
После инициализации компонентов на форме каждому контролу в чьём имени присутствует button, будем добавлять наш обработчик выделения нужного контрола.
Как правильно узнать является ли Control кнопкой, я пока не знаю, поэтому навскидку решил проверять по имени.
Теперь не нужно будет писать для каждого баттона отдельно.
Возможно, это тебе подойдёт.
1
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
10.01.2014, 10:54  [ТС]
Тогда уж по типу Button определять, но всё же это как-то не элегантно.

Проще через АОП тогда, но вопрос в том, как по MethodInfo определить что это именно обработчик именно события Click кнопки.
1
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
10.01.2014, 11:01
Цитата Сообщение от Cupko Посмотреть сообщение
Тогда уж по типу Button определять, но всё же это как-то не элегантно.
Кстати, как это сделать? На такое сравнение компилятор ругался
C#
1
if (Controls[i] == System.Windows.Forms.Button)
Цитата Сообщение от Cupko Посмотреть сообщение
Проще через АОП тогда
А с этим, к сожалению, не сталкивался вообще..(
0
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
10.01.2014, 11:18  [ТС]
Цитата Сообщение от es_ Посмотреть сообщение
Кстати, как это сделать?
C#
1
2
3
4
5
6
7
foreach (Control ctrl in this.Controls)
{
    if (ctrl.GetType() == typeof(Button))
    {
        //OK
    }
}
Добавлено через 5 минут
ну или...

C#
1
2
3
4
5
6
7
foreach (Control ctrl in this.Controls)
{
    if (ctrl is Button)
    {
        //OK
    }
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.01.2014, 11:18
Помогаю со студенческими работами здесь

Фиксирование цвета кнопки после клика
Всем привет! Есть несколько кнопок. Нужно, чтобы при клике на кнопку у нее фиксировался необходимый цвет. Если это первый клик на...

Смена цвета кнопки на форме
Добрый вечер! Возник следующий вопрос - как кнопку на форме заставить меня цвет через определенное время (через секунду, например) и затем...

Обработка клика только после отпускания кнопки мыши
Как сделать, что бы когда нажал на кнопку, действие работало только после отпускания мыши?

После нажатия кнопки в первой форме, становится невидимым TextBox во второй форме
у меня 2 формы .в первой форме, после нажатия кнопки открывается вторая форма. как сделать чтобы после нажатия кнопки в первой форме ,...

Программа завершается, после нажатия любой кнопки
В общем, программа завершается после нажатия любой кнопки... Весь код: #include &lt;windows.h&gt; #include &lt;iostream&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru