2012-08-23 157 views
1

我有一个WinFrom,我隐藏所有边框和控制框。在WinForm内部,我有一个RECT()(不是WinFrom控件)RECT填充整个WinForm。使WinForm控件出现在所有其他控件的顶部

我想向WinForm添加一个标签,但我希望标签出现在RECT的顶部。该标签出现在WinForm上,但从未在RECT之上。我已经使用以下尝试:

/*App Runs - Label does not show up*/ 
_label.Text = "This is the label"; 
_label.BackColor = Color.Cornsilk; 
_form.Controls.Add(_label); 
_form.Controls.SetChildIndex(_label, 0); 

/*App Does Not Run*/ 
_label.Text = "This is the label"; 
_label.BackColor = Color.Cornsilk; 
_form.Controls.SetChildIndex(_label, 0); //trying to set the index before I add the label to the form 
_form.Controls.Add(_label); 

/*App Runs - Label does not show up*/ 
_label.Text = "This is the label"; 
_label.BackColor = Color.Cornsilk; 
_label.BringToFront(); 
_form.Controls.Add(_label); 

/*App Runs - Label does not show up*/ 
_label.Text = "This is the label"; 
_label.BackColor = Color.Cornsilk; 
_form.Controls.Add(_label); 
_label.BringToFront(); 

正如你所看到的,我已经尝试了很多不同的东西,并没有什么工作。我也尝试添加RECT后添加标签,但无济于事。我在添加背景图片时遇到了类似的问题(尽管这里没有提到问题)。有谁知道使标签出现在RECT之上的更有力的方法吗?

此外,由于我使用的API和dll,我不能使用除RECT或WinForms以外的其他东西。

+0

“RECT”不是控件 - 它只是大小的定义。实际上在做什么? (http://msdn.microsoft.com/en-us/library/windows/desktop/dd162897(v=vs.85).aspx) –

+0

你是什么意思Rect?你的意思是你正在OnPaint等绘制一个矩形?没有标准的C#Rect控件。显示将此Rect放在窗体上的代码。你为什么不把BringToFront应用到你想要带到前面的物体 - 标签? – Wolf5370

回答

5

您可以在标签本身上使用BringToFront

_label.BringToFront(); 

这将使标签的形式在Z顺序的前面,所以它应该显示在其他表单元素的顶部。

我有一个RECT()(不是WinFrom控制)RECT填满整个WinForm的

A “RECT” 是不是控制 - 这是一个定义的大小和位置。根据您用来显示背景的内容,这可能不起作用。如果将它绘制到整个表单中,则可能会覆盖您的其他控件,并“屏蔽”它们,而不管用于z顺序。如果没有更多信息,可能很难提供指导,但是您必须确保在“RECT”之后让标签重新绘制。

+0

我是,我发布了不正确的代码,但我已经编辑它。 – tentmaking

+0

@ZacharyHunt查看关于RECT的评论... –

+0

我认为你可能是正确的,无法在RECT的基础上添加。 RECT使用Magnification API通过屏幕放大来填充。我只是想在获得最终答案之前,我承认失败并转向其他UI解决方案。 – tentmaking

相关问题