c# - 如何获得看起来像没有选项卡的 TabControl 的控件?

标签 c# .net winforms tabcontrol

我们有一个在选项卡控件的选项卡页面中显示媒体项目的表单,我正在实现一项允许用户将选项卡页面“弹出”到他们自己的表单中的功能。

但是,当我将媒体播放器添加到窗体而不是 TabPage 时,背景从选项卡页的渐变填充切换到父窗体的纯 SystemColors.Control 背景。我需要将媒体播放器添加到与 TabControl 具有相同背景但不在顶部显示选项卡的控件。我尝试将媒体播放器添加到 TabControl 的控件集合中,但这只会引发异常。

如何获得看起来像没有选项卡的 TabControl 的控件?我应该继续尝试将媒体播放器添加到 TabControl,还是应该尝试编写一个具有自定义绘制背景的面板?如果是后者,我如何确保它适用于所有可能的主题?

最佳答案

问题似乎与 UseVisbleBackgroundStyle 有关。据我所知,只有按钮和 TabPages 具有此属性。

以下是一个非常肮脏的 hack,只是为了让你开始:

1) 从 Panel 派生一个 customControl 并添加“using System.Windows.Forms.VisualStyles;”

2) 添加如下代码

//warning: incomplete, add error checking etc
private readonly VisualStyleElement element = VisualStyleElement.Tab.Body.Normal;
public bool UseVisbleBackgroundStyle { get; set; }

protected override void OnPaint(PaintEventArgs pe)
{
    if (UseVisbleBackgroundStyle)
    {
        var x = new VisualStyleRenderer(element);                           
        x.DrawBackground(pe.Graphics, this.ClientRectangle);
    }
    else
    {
        base.OnPaint(pe);
    }
}

关于c# - 如何获得看起来像没有选项卡的 TabControl 的控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/568941/

相关文章:

c# - 安装的应用程序无法加载MySQL.Data.DLL?

c# - WinForms TPL Pattern w/Multiple Tasks & UI Sync - 这是正确的吗?

c# - 在 VS2010 中执行 Powershell Invoke 时出错

javascript - 在 ASP Net CORE MVC 元素中使用 Google Material UI

.net - 如何在 ASP.NET MVC 中拥有同名的文件夹和 Controller ?

c# - 检查文本文件是否在记事本中打开

c# - 我怎么知道 ffmpeg arguments 命令行中每个参数的作用?

c# - 'DateTime' 在 VS2015 中不包含 'ToShortDateString' 的定义

c# - Java 中的 Process.Start 帮助

.net - Linq 查询超慢?