2017-09-07 57 views
0

我已經創建了自定義文本框控件,我嘗試爲文本框設置默認文本。所以在它的構造函數中我說Text = "My Default Text",這似乎不影響設計模式下的控制。自定義文本框 - 文本屬性不能在構造函數中工作

這是自定義文本框代碼:

using System.Windows.Forms; 

namespace MyNameSpace 
{ 
    public class xTextBox : TextBox 
    { 
     public xTextBox() 
     { 
      BorderStyle = BorderStyle.None; 
      Text = "My Default Text"; 
     } 
    } 
} 

然後,我丟棄在用戶控件控制,沒有文字:(

Control dropped

以下是我在屬性看框: Text property empty

Properties box

+0

我不認爲Visual Studio的設計模式在顯示它們時調用控件構造函數。 –

+0

Visual Studio調用構造函數,在我的情況下應用''BorderStyle''。我觀察到它只有'''Text''屬性失敗 –

+0

我嘗試了一個按鈕自定義控件''XButton'',一旦拖放VS創建控件並將''「XButton1」''設置爲文本並忽略文本I放入其構造函數中。我添加了''BackColor = Color.Yellow''這工作 –

回答

0

的問題在這裏解釋:Virtual member call in a constructor

總之,以得到你想要的,你需要有一個密封類:

public sealed class xTextBox : TextBox 
{ 
    public xTextBox() 
    { 
     BorderStyle = BorderStyle.None; 
     Text = "My Default Text"; 
    } 
} 

或密封Text屬性:

public class xTextBox : TextBox 
{ 
    public xTextBox() 
    { 
     BorderStyle = BorderStyle.None; 
     Text = "My Default Text"; 
    } 

    public sealed override string Text 
    { 
     get { return base.Text; } 
     set { base.Text = value; } 
    } 
} 

enter image description here

+0

它仍然不起作用,我認爲這是一個Visual Studio的問題,我觀察到如果我關閉設計器並打開''Text''出現。 –

+0

它的工作原理。在您更改控件中的某些內容後,您需要構建解決方案。 – Reniuz

+0

我這樣做了,沒有什麼改變;我關閉了VS的解決方案,重新啓動並重新構建;同樣,控制文本一旦丟棄就是空的。我發現問題在於「Text」屬性。請閱讀我對問題的評論 –

0

文本需要是一個函數之外的變量。

Public string Text { 
      get { return this;} 
      set{value = this;} 
} 

所以這樣的事情。上面的代碼中可能存在錯誤,因爲我在移動設備上鍵入了它。在你有這樣的事情之後,在任何你想要的地方設置文本值。

相關問題