-1
我有一個問題。 按Enter後,我打開新窗體(窗體2),在那裏我可以添加一些數據庫。 在Form2上按鈕確定。如果我按下回車鍵激活此按鈕,我將關閉form2。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()。 –