Для осуществления перехода по кнопке Enter, аналогично тому, как выполняются переходы по кнопке Tab, существуют специальные контролы.
CustomFormTuner
CustomFormTuner - один из контролов для осуществления перехода по кнопке Enter.
CustomFormTuner не входит в стандартную поставку Flexberry.Подключение CustomFormTuner
Для работы CustomFormTuner необходимы следующие dll:
- IIS.AMS02.SpecificControls.dll
- ICSSoft.STORMNET.Windows.Forms.AdditionalControls.dll (входит в стандартную поставку Flexberry)
Далее в коде конструктора формы необходимо выполнить создание и настройку:
public class WinformC__СотрудникE : ICSSoft.STORMNET.UI.BaseWinEdit, IIS.TryDOEPOnEnter.DPDIC__СотрудникE
{
//...
public WinformC__СотрудникE()
{
//...
IIS.AMS02.CustomFormTuner Tuner = new IIS.AMS02.CustomFormTuner();
Tuner.TuneMoveNextOnEnterPress(this);
Tuner.TuneSkipKeyPressEventOnEnterPress(this);
//...
}
}
NextControlByEnterTuner
NextControlByEnterTuner - усовершенствованный CustomFormTuner.
Подключение NextControlByEnterTuner
Для работы NextControlByEnterTuner необходима следующая dll: ICSSoft.STORMNET.Windows.Forms.AdditionalControls.dll.
Для подключения в программном коде можно в конструкторе формы выполнить следующую последовательность действий:
1) Создать объект необходимого типа.
NextControlByEnterTuner Tuner = new NextControlByEnterTuner();
2) Подписать подходящие контролы формы на переход по кнопке Enter, при этом формируется список подписанных контролов, который можно узнать через свойство SubscribedOnEnterControls. На настоящий момент автоматически подписываются контролы следующих типов (эти контролы не должны быть контролами-контейнерами): System.Windows.Forms.TextBox , System.Windows.Forms.DateTimePicker , System.Windows.Forms.CheckBox , System.Windows.Forms.ComboBox , ICSSoft.STORMNET.Windows.Forms.DateTimePicker , ICSSoft.STORMNET.Windows.Forms.ExtendedComboBox , ICSSoft.STORMNET.Windows.Forms.ExtendedTextBox , ICSSoft.STORMNET.Windows.Forms.ExtTextControl.
Tuner.SubscribeDefaultSetOfControlsOnEnter(this);
3) Также, если есть необходимость, можно добавить контролы, которые должны быть подписаны на переход по кнопке Enter.
Tuner.AddToSubscribedOnEnterControls(new System.Windows.Forms.Control[] {lsvРезультат, btnНайти};
System.Windows.Forms.Button, то сначала выполнится событие, навешенное на клик, после чего уже будет осуществлён переход по Enter (переход организован в событии Control.KeyUp).4) Для достижения желаемого результата также необходимо выполнить аккуратную настройку свойств TabIndex и TabStop у контролов формы.
Интерфейс ICanChangeByEnter
Интерфейс ICanChangeByEnter разработан для организации взаимодействия NextControlByEnterTuner с контролами, в которых на нажатие Enter повешена какая-то логика.
public interface ICanChangeByEnter
{
/// <summary>
/// Определяет, обрабатывает ли контрол движение по Enter самостоятельно
/// </summary>
/// <returns></returns>
bool CanChangeByEnter { get; }
/// <summary>
/// Определяет, будет ли когда-нибудь доступен переход по Enter из контрола
/// </summary>
bool CanReleaseEnter { get; }
/// <summary>
/// Определяет, можно ли сейчас выйти из контрола по Enter
/// </summary>
bool LetReleaseEnterNow { get; }
}
Если LetReleaseEnterNow == true, то переход по Enter будет выполнен; в противном случае - нет.