C# TabControl 中的 Tab 切换

Pig*_*let 4 c# tabs controls tabcontrol

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

有人有想法吗?

Pop*_*lin 5

您需要从 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);
    }
}
Run Code Online (Sandbox Code Playgroud)