【问题标题】:keyboard shortcuts do not work when adding a form to a panel c#将表单添加到面板 c# 时,键盘快捷键不起作用
【发布时间】:2009-05-20 15:53:18
【问题描述】:

我正在编写一个应用程序,其中有一个带有面板的表单。我注意到,当我向面板添加另一个表单时,添加的表单的键盘快捷键停止工作。

我正在使用以下代码:

MainMenu m = new MainMenu();
m.TopLevel = false;
m.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
m.Dock = System.Windows.Forms.DockStyle.Fill;
pnl.Controls.Add(m);
m.Visible = true;
pnl.ResumeLayout();

有没有办法让键盘快捷键起作用?

问候

【问题讨论】:

    标签: c# .net winforms keyboard-shortcuts


    【解决方案1】:

    我的第一个猜测(这完全是一个猜测)是您在构造子对象时需要传递父/所有者,而不是仅仅分配父...您能向我们展示您的那部分代码吗?

    此外,只是浏览一下您的代码,对于 MainMenu,将 Dock 设置为 Fill 似乎很奇怪......

    【讨论】:

      【解决方案2】:

      将一个表单添加到另一个表单内的面板?这不是受支持的方案;坦率地说,我很惊讶它没有抛出异常。更好的方法是使用 UserControls。

      【讨论】:

      • 它工作正常。我过去曾多次使用过这个。唯一的问题是键盘快捷键似乎不起作用
      • 你怎么知道它不是受支持的场景?
      • 我承认我找不到任何明确说明其中一种方式的文档。但根据我对 Windows 窗体的了解,这不受支持。仅仅因为您可以使其在某些情况下工作并不意味着它受支持,或者您应该期望所有功能都能正常工作。
      • @commongenius - 我已经在几个不同的程序中使用过这个......“模式”......第一个是一个旧的 C++ 程序,只要您正确地重新设置父级,窗口句柄就只是一个窗口句柄,一切都可以顺利移动。在 .Net 中有点棘手,因为您与 API 相去甚远,就像您指出的那样,我敢肯定这不是他们想要的……但是,如果您确保分配正确,那只是窗口句柄,它工作正常。
      【解决方案3】:

      我发现这是由于焦点问题。

      我已经将我的表单转换为用户控件并且问题已经消失了。

      【讨论】:

        猜你喜欢
        • 2016-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-11
        • 2010-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多