我面临这样的问题,我觉得很难克服。在 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/