Pig*_*let 4 c# tabs controls tabcontrol
我面临这样的问题,我发现很难克服。在 WinForms 中,我有一个带有 n 个 TabPage 的 TabControl。我想扩展 Ctrl+Tab / Ctrl+Shift+Tab 切换。所以我编写了一些代码,只要焦点位于 TabControl 或 Form 上,这些代码就可以正常工作。当应用程序焦点位于 TabPage 内部(例如位于 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);
}
}
Run Code Online (Sandbox Code Playgroud)