2009-11-10 85 views
1

我正在开发一个winforms应用程序(使用.NET 3.5)透明背景为一个控制

在一种形式中我有一个控制面板,并且在它的内部DataGridView控件。

我想有一些控制(假设为简单 - 一个标签) 出现在DataGridView的面前,我想这个标签是透明 - 这意味着:我想看到显示的数据在gridview后面。

我只想看到标签中的文本,但不是整个矩形..以及该文本的后面 - 查看我在gridview中的数据。

问题如下:标签的父级控件不是gridview (因为它不是容器控件)。标签的父母是面板控件。

所以,当我将标签设置为透明的时候,我实际上获得了面板透明度,而不是datagridview。

下面是截图: screenshot 这说明情况(实际控制我想显示不是一个标签,而是我已经下载了一个自定义的控制)

任何想法.. ???

回答

1

将面板设置为透明。它不应该导致面板出现任何问题,因为您仍然可以使用它自己的形式。

还有一个问题也提醒你。 winforms控件中的透明只是模拟或伪造的,因为当您创建控件时,它会在控件背后使用表单的图像,并将其用于背景,而不是真正使其透明。如果背景发生变化或控件在窗体上移动,这可能会导致问题。

+0

好吧..我认为我实际上需要让它变得透明。 由于您提出的解决方案无济于事 - 我现在可以在后台看到该表单。 我需要看到在我的控件后面的gridview中显示的数据..它肯定会改变,并且不是静态的.. – Alex 2009-11-10 14:37:14

5

看看这个CodeProject上的文章: How to Use Transparent Images and Labels in Windows Forms

而且,你总是可以使用GDI(System.Drawing中),只是吸引你直接想要的东西在透明面板?

+0

在Winforms中,如果您想要真正的透明度,GDI +是您最好的选择。 – Stewbob 2009-11-10 14:50:05

+0

我实现了链接文章中描述的解决方案,但是我遇到了一个问题:当我拖动表单时,它在前一个位置捕获的背景被拖动到新的位置... – 2010-09-01 16:46:40