我们有一个在选项卡控件的选项卡页面中显示媒体项目的表单,我正在实现一项允许用户将选项卡页面“弹出”到他们自己的表单中的功能。
但是,当我将媒体播放器添加到窗体而不是 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/