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表示される設計時/デフォルトですtabPageF10「その他」のタブページにF9移動しても、元のページに戻らないのはなぜですか。

4

2 に答える 2

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);
}
于 2012-08-30T17:25:46.017 に答える
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;、しかし、それはあなたが言及した振る舞いを示しました。

于 2012-08-30T17:25:54.987 に答える