微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

tabcontrol的透明背景窗口formsce

我想在紧凑的框架中自定义tabcontrol,但是我找不到为这个控件设置透明背景的解决scheme。 我想覆盖“OnPaintBackground()”方法开始设置背景,但这个function没有调用。 如何在创build控件时使用此函数

Windows Mobile .net cf

如何将Flash游戏embedded到Windows Mobile应用程序中

为什么WMDC / ActiveSync如此脆弱?

钩住API函数GetSystemMetrics

如何在移动应用程序中dynamic调整窗体的大小?

编辑 :我读你的评论关于尝试设置容器的背景颜色,而不是单个标签,我做了一些实验和研究。

看来,使用TabControl类的OnDrawItem方法来绘制选项卡“标题”(包含每个选项卡的文本,用户点击选择选项卡的控件的一部分),以及容器的背景(除选定选项卡内容外的所有内容,选项卡本身在其OnPaintBackground方法中绘制)。

你可以通过覆盖它的OnDrawItem方法来获得TabControl的背景,但是简单地填充通过DrawItemEventArgs传递的边界也将使得标签标题透明,使得它们不可点击(点击将通过表单,到达任何在它后面)。

我看到它的方式,你有几个选项来尝试解决这个问题:

清除传递给OnDrawItem的边界,然后手动重绘每个TabPage的标题。 这是一个痛苦,因为没有办法获得每个标签标题,而不用手动计算,使用页面的文本,字体大小,边界,谁知道还有什么。 似乎没有任何公开的API从TabControl的背景分开绘制TabPages的标头。

而不是使TabControl的背景和TabPages的标题完全透明,只有使他们半透明,留下标题可点击。 这可能看起来不太漂亮,但比第一个选项容易得多。 要做到这一点,你需要将窗体的AllowTransparency属性设置为true,然后使用下面的代码

类TransparentisTabControl:TabControl

{

//没有声明这是新的,你可能会得到一个警告,说这个属性隐藏了一个基类的成员。

//基类的BackColor属性,我相信你已经发现了,

//无论如何都隐藏着属性,所以它并不重要。

公共新颜色BackColor {get; 组;}

public TransparentishTabControl(Color backColor)

{

如果(backColor.A == 0)

抛出新的ArgumentException(“backColor的alpha分量不能为零,或者这个TransparentisTabControl的标签页将不能被选择。

BackColor = backColor;

}

保护覆盖无效OnDrawItem(DrawItemEventArgs e)

{

base.OnDrawItem(假);

e.Graphics.Clear(背景色);

}

}

这段代码对我来说工作的很好,但是在目标平台上可能会有不同的表现。 让我知道如果你需要更多的帮助/澄清:)

你是否试图使标签控制透明,或单个标签页? 在TabControl-torived类中重写OnPaintBackground是不够的,因为每个TabPage也都是自己绘制的。 您需要一个派生自TabPage的自定义类,并具有OnPaintBackground的覆盖。

class TransparentTabPage : TabPage { public TransparentTabPage() : base("TransparentTabPage") { } protected override void OnPaintBackground(PaintEventArgs e) { base.OnPaintBackground(e); Form form = FindForm(); e.Graphics.CompositingMode = CompositingMode.sourcecopy; using (SolidBrush sb = new SolidBrush(form.TransparencyKey)) e.Graphics.FillRectangle(sb,Bounds); } }

为此,表单需要将其TransparencyKey设置为某个值,并且其AllowTransparency属性的值必须为true。

我无法在tabcontrol中找到ondrowitem来覆盖它。 windows CE环境(smartDevice)不支持Windows窗体中的所有功能

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐