【问题标题】:How do I disable visual styles for just one control, and not its children?如何仅禁用一个控件而不是其子控件的视觉样式?
【发布时间】:2008-11-18 11:25:56
【问题描述】:

我在 TabControl 中有一个 TabControl。我希望外部 TabControl 在左侧显示其选项卡。但是,启用视觉样式后,左对齐的 TabControl 无法正确显示。我可以只为外部 TabControl 禁用视觉样式吗?

我知道第三方 TabControl 替代品 - 这不是我想要的。

【问题讨论】:

    标签: c# .net winforms tabcontrol


    【解决方案1】:

    向您的项目添加一个新类并粘贴如下所示的代码。建造。将新控件从工具箱顶部拖放到表单上。子控件的视觉样式被保留。

    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    public class FixedTabControl : TabControl {
      [DllImportAttribute("uxtheme.dll")]
      private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
    
      protected override void OnHandleCreated(EventArgs e) {
        SetWindowTheme(this.Handle, "", "");
        base.OnHandleCreated(e);
      }
    }
    

    【讨论】:

    • 如何实现这一点以启用按钮的视觉样式,我已经禁用了进度条的样式以具有不同的颜色。但我希望我的 tabcontrol 和我的按钮具有更新的样式。这可能吗?
    • 好吧,你做错了。使用完全相同的方法,但仅适用于要禁用其视觉样式的特定控件。就像那个进度条一样。
    • 到目前为止,我发现这个问题的最佳解决方案。谢谢!
    • 非常适合我想要改变颜色的进度条。看起来仍然很时尚!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    相关资源
    最近更新 更多