WinForms中丢失的选项卡和alt +键

时间:2014-09-16 16:13:29

标签: winforms sharpdx

我已经开始使用嵌入式SharpDx RenderControl处理WinForms项目。它是这样开始的:

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        using(var game = new VisionQuestGame())
        {
            var form = new FMain(game.Data);
            form.Show();

            game.IsMouseVisible = true;
            game.Run(form.RenderControl);
        }
    }
}

VisionQuestGame类继承自SharpDx.Toolkit.Game

问题是现在Tab键不起作用,而且alt-F4等组合键也不起作用。我已经发现我可以像这样克服Tab问题:

public bool PreFilterMessage(ref Message m)
{
    if ((m.Msg == 256 || m.Msg == 257) && m.WParam.ToInt32() == (int) Keys.Tab)
    {
        if (m.Msg == 256 && (ModifierKeys == Keys.None || ModifierKeys == Keys.Shift))
            SelectNextControl(ActiveControl, ModifierKeys == Keys.None, true, true, true);
        return true;
    }
    return false;
}

不幸的是,没有任何alt-F4组合键会以这种方式推动。

我很感激您的任何反馈!

1 个答案:

答案 0 :(得分:0)

进行以下尝试。它在WinForms获取它的脏爪子之前拦截了按键:)它处理ALT + F4以及Tab,并消耗按键。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
  if (keyData == (Keys.Alt | Keys.F4))
  {
    MessageBox.Show("Don't Quit!");
    return true;
  }
  else if (keyData == Keys.Tab)
  {
    MessageBox.Show("Just keeping tabs!");
    return true;
  }
  return base.ProcessCmdKey(ref msg, keyData);
}