2012-08-30 62 views
0

我已將表格的KeyPreview屬性設置爲true爲什麼此代碼只能在一個實例中工作?

我已經添加以下代碼:

private void PlatypusScheduleForm_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.F9) 
    { 
    tabControlPlatypi.SelectedTab = tabPageDuckBill; 
    } 
    else if (e.KeyCode == Keys.F10) 
    { 
    tabControlPlatypi.SelectedTab = tabPagePlatypus; 
    } 
} 

當我醪F10,它按預期工作;糖化F9,但是,什麼都不做。

tabPageDuckBill是顯示的設計時/默認tabPage。爲什麼會F10工作帶我到「其他」標籤頁,但F9然後不能回到原來的?

+0

你的F9鍵壞了嗎? – Servy

+0

你需要搗碎F10才能使其工作?當您在方法中設置斷點時,F9是否會導致它啓動? –

+0

還有其他的預覽鍵和捕捉F9嗎? –

回答

1

我發現,如果我只是這樣做:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.F9) 
    { 
     tabControl1.SelectedTab = tabPage1; 
     e.SuppressKeyPress = true; 
    } 
    else if (e.KeyCode == Keys.F10) 
    { 
     tabControl1.SelectedTab = tabPage2; 
     e.SuppressKeyPress = true; 
    } 
} 

它會來回切換就好了。沒有那個e.SuppressKeyPress = true;,但是,它展現了你提到的行爲。

1

我在過去遇到同樣的問題,即使從SelectedIndexChanged()事件中刪除可疑代碼後問題仍然存在。然後我使用了效果更好的不同技術。而不是使用形式KeyDown事件中,我推翻形式ProcessCmdKey事件如下:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.F9) 
    { 
    this.tabControl1.SelectedTab = tabPage1; 
    return true;  
    } 
    else if (keyData == Keys.F10) 
    { 
    this.tabControl1.SelectedTab = tabPage2; 
    return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
相關問題