Как установить фокус на первый ввод во всех формах проекта WinForms?C#

Место общения программистов C#
Ответить
Anonymous
 Как установить фокус на первый ввод во всех формах проекта WinForms?

Сообщение Anonymous »

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

Я представляю, как это сделать для одной формы. Мы могли бы запустить следующее:

Код: Выделить всё

var firstInput = this.Controls.OfType().FirstOrDefault();
if (firstInput != null)
firstInput.Focus();
Это нормально, но замена этого в каждой форме — это не только огромная задача, но и огромное количество дублирования кода.

Я хотел сделать это для всех форм одновременно. В этом случае я создал базовый класс:

Код: Выделить всё

public class BaseForm : Form
{
public void SetFoucsOnFirstInput()
{
var firstInput = this.Controls.OfType().FirstOrDefault();
if (firstInput != null)
firstInput.Focus();
}
}
И сделал так, чтобы все формы наследовались от него, а не от формы. Единственная проблема заключается в том, как вызвать этот метод во всех формах после инициализации формы. Выполняется поиск какого-либо события инициализации формы, на которое я мог бы подписаться в базовом классе, но не нашел ни одного.

Как это сделать в Windows Forms? Есть ли способ использовать подход базового класса без необходимости изменять все 90 форм? Есть ли лучший способ? Или просто нет способа сделать это без изменения каждой формы?

Подробнее здесь: https://stackoverflow.com/questions/420 ... ms-project
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»