2012-08-23 196 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

相關問題