2013-08-27 41 views
0

好的 - 我只是需要一些想法。場景是 - 我的Windows窗體中有很多字段是強制用戶輸入的。其中之一可能是「名稱」。因此,對於此,我有一個標籤lblName,其中文字爲Name,另一個標籤爲lblMandatory,文字爲*,顏色爲紅色,表示這是強制性的。所以這意味着我有兩個標籤Name,同樣我有20個以上的字段。我只是想創建一個自定義標籤 - 一種叫做MandatoryLabelControl的東西,默認情況下在文本後會有一個*。這可以幫助我減少表格中的標籤數量。自定義標籤實際上是兩件事的組合 - 首先是標籤的文本,其次是紅色的*。我搜索了很多,但無法找到任何開始。請幫助一些建議。C#中的強制性標籤用戶控件#

+0

你可以使用CSS來解決這個問題。爲必須使用的標籤應用一些特定的類,然後使用CSS類顯示*。 –

+1

顯然,沒有人能夠說你在問一個winforms問題。你通過使用[winforms]標籤來解決這個問題。不,用一個用戶控件替換一個標籤不會讓你領先。 –

回答

0

您有兩個選項 - 自定義標籤控件或包含標籤的用戶控件和基於強制屬性的*。如果您明確需要將「*」設置爲紅色(似乎是您的問題),則需要使用用戶控件。這稍微重一點,所以我建議重新考慮這個要求。以下是自定義標籤控件的外觀:

public class CustomLabel : Label 
{ 
    public CustomLabel() 
    { 

    } 

    public bool Mandatory { get; set; } 

    public override String Text 
    { 
     get 
     { 
      return base.Text + " *"; 
     } 
    }  
} 

您現在將使用CustomLabel而不是Label。

+0

好的。紅色*的方法是什麼? – Sandeep

+1

@Sandeep我不會更改'Text'屬性,而是在繪製基本測試之後重寫'OnPaint'事件以添加紅色*。 – Rotem

+0

@Sandeep,你可以使用由兩個標籤組成的用戶控件。當Mandatory設置爲False時,隱藏標有「*」的標籤。這裏唯一的問題是你需要公開Text屬性等等,以便其他人使用它,就好像它是一個標籤一樣。 – Vivek