-1
У меня есть поблем. После нажатия Enter I открывается новая форма (form2), где я могу добавить что-то к db. On Form2 - кнопка Ok. Если я активирую эту кнопку нажатием Enter, я закрываю форму2.C# - KeyUp только на одной форме
Проблема заключается в том, что этим действием я другое время вызова KeyUp на Form1, и Im в петлю ..
вот пример:
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
this.KeyUp += new System.Windows.Forms.KeyEventHandler(KeyEvent);
}
private void KeyEvent(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
dataGridViewSkladovePolozky.Focus();
pridatDoKosiku();
}
}
private void buttonPridatDoKosiku_Click(object sender, EventArgs e)
{
pridatDoKosiku();
}
private void pridatDoKosiku()
{
PridatDoKosiku pridatDoKosiku = new PridatDoKosiku();
pridatDoKosiku.ShowDialog();
refreshNakupniKosik(true);
pridatDoKosiku.Dispose();
}
Это вызвано 'this.KeyPreview = true;'. Если вы хотите сохранить это поведение, когда form2 открыт, то в свой 'KeyEvent' просто добавьте' if (form2.Visible) return; ' –
Нет никакой особой причины, чтобы поддержать KeyUp. Вероятно, вы сделали это, чтобы попытаться обойти неудобное поведение KeyPreview. Что является устаревшим свойством VB6 и имеет семантику VB6, вы не получите событие KeyDown для клавиш навигации. Как и Enter. Вместо этого переопределите ProcessCmdKey(). –