自定义控件上的可选覆盖

时间:2021-03-22 15:29:43

标签: c# custom-controls

我有一个自定义的 TabControl,它有代码既可以防止用户使用 Tab 快捷方式进行导航,也可以删除标签标题。在某些情况下,我仍想阻止选项卡导航,但显示选项卡标题,因此我想到为自定义控件创建一个属性,并仅在此属性为 {{1} 时应用隐藏标题的代码,但我从这里得到了删除标签页头的解决方案,但我并不完全理解。

我尝试将代码放在带有我的属性的 true 中,但这会使我的 Visual Studio 崩溃。我想这是因为这样做我将在 if 时用空过程覆盖必要的代码,所以,当 useHide == false 运行常规继承代码而不是覆盖它时,我该如何做到这一点?

useHide == false

.NET 框架 4.7.2、Visual Studio 2019、Winforms 应用程序

1 个答案:

答案 0 :(得分:0)

useHide 为 false 时,您缺少对基本方法的调用,请改用此方法。

protected override void WndProc(ref Message m)
{
    // Hide the tab headers at run-time
    if (useHide && m.Msg == TCM_ADJUSTRECT && !DesignMode)
    {
        m.Result = (IntPtr)1;
        return;
    }

    // call the base class implementation
    base.WndProc(ref m);
}