我面临这样的问题,我觉得很难克服。在 WinForms 中,我得到了一个带有 n 个 TabPages 的 TabControl。我想扩展 Ctrl+Tab/Ctrl+Shift+Tab 切换。所以我写了一些代码,只要焦点在 TabControl 或 Form 上就可以正常工作。当应用程序焦点位于 TabPage 的 INSIDE(例如位于 TabPage 内部的按钮上)时,按 Ctrl+Tab 时,我的代码将被忽略,TabControl 会自行跳至 TabPage(避开我的代码)。

任何人的想法?

最佳答案

您需要从 TabControl 派生并覆盖 ProcessCmdKey,虚拟方法以覆盖 Ctrl-Tab 行为。

例子:

public class ExtendedTabControl: TabControl
{
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == (Keys.Control | Keys.Tab))
        {
            // Write custom logic here
            return true;
        }
        if (keyData == (Keys.Control | Keys.Shift | Keys.Tab))
        {
            // Write custom logic here, for backward switching
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }
}

关于C# TabControl 中的 Tab 切换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1872972/

10-14 13:27