3

我有一个 WinFrom,我在其中隐藏了所有边框和控制框。在 WinForm 内部,我有一个 RECT()(不是 WinFrom 控件),RECT 填充了整个 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 以外的其他东西。

4

1 回答 1

9

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

_label.BringToFront();

这会将标签带到表单上 Z 顺序的前面,因此它应该显示在其他表单元素的顶部。

我有一个 RECT()(不是 WinFrom 控件),RECT 填充了整个 WinForm

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

于 2012-08-23T16:55:48.763 回答