Кто-нибудь знает, чего я тут делаю не так?
Назначаю в коде (ниже) свойство AcceptButton в конце конструктора модального диалога (наследник Form, по которому вызывается ShowDialog()), а реально при нажатии получаю DialogResult, соответствующий нажатию другой из двух кнопок диалога...
public partial class Form1 : Form
{
public Form1()
{
const int
horizontalMargin = 10,
verticalMargin = 10;
SuspendLayout();
InitializeComponent();
btnRight = new Button();
btnRight.Parent = this;
btnRight.Location = new Point(ClientSize.Width - horizontalMargin - btnRight.Width, ClientSize.Height - verticalMargin - btnRight.Height);
btnRight.Text = "Right";
btnRight.DialogResult = System.Windows.Forms.DialogResult.No;
btnLeft = new Button();
btnLeft.Parent = this;
btnLeft.Location = new Point(btnRight.Left - horizontalMargin - btnLeft.Width, ClientSize.Height - verticalMargin - btnLeft.Height);
btnLeft.Text = "Left";
btnLeft.DialogResult = System.Windows.Forms.DialogResult.Yes;
AcceptButton = btnLeft;
CancelButton = btnRight;
ResumeLayout(true);
}
private Button btnLeft, btnRight;
}
В результате при нажатии
Enter моя переменная
result
DialogResult result = form.ShowDialog();
получает DialogResult.No, соответствующий не той кнопке, которая назначена как AcceptButton, а другой.
Кто-нибудь понимает, в чём тут дело?
Эксперимент показал, что нажатие Enter соответствует той кнопке, у которой TabIndex = 0. Поменял у них TabIndex — всё стало как мне нужно.
Странно это всё...
Здравствуйте, svmich, Вы писали:
S>Эксперимент показал, что нажатие Enter соответствует той кнопке, у которой TabIndex = 0. Поменял у них TabIndex — всё стало как мне нужно.
S>Странно это всё...
Кнопка "Принять" может не активироваться, если выбранный в текущий момент элемент управления на форме перехватывает клавишу ВВОД и обрабатывает ее. Например, элемент управления многострочного текстового поля допускает нажатие клавиши ВВОД, если она выбрана для вставки нового строкового символа в элемент управления.
Я думаю, что просто другая кнопка в этот момент была в фокусе.