2013-10-04 19 views
5

Tak więc dzisiaj postanowiłem utworzyć niestandardową formant TextButton w języku C# przy użyciu programu Visual Studio 2012. Podobał mi się projekt, który wykonałem, choćby najprostszy. Jednak gdy zdecydowałem, że przeniesie mój ukończony składnik do formularza za pomocą Visual Studio Designer, wpadłem na szkopuł. Mimo że właściwość Text pojawia się na liście właściwości, właściwość ta nie jest faktycznie zmieniana w pliku MainWindow.Designer.cs. Poniżej znajduje się kod, który określa właściwość:UserControl pokazuje właściwość w programie Visual Studio Designer, ale właściwość nie została zmieniona

[Category("Appearance")] 
[Description("The text displayed by the control.")] 
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] 
public override string Text 
{ 
    get 
    { 
     return Button.Text; 
    } 
    set 
    { 
     Button.Text = value; 
    } 
} 

I tu jest mój kod, który tworzy plik MainWindow.Designer.cs w metodzie InitializeComponent:

this.Open = new UI.Controls.TextButton(); 
this.Open.Location = new System.Drawing.Point(9, 3); 
this.Open.Name = "Open"; 
this.Open.Size = new System.Drawing.Size(112, 28); 
this.Open.TabIndex = 4; 
this.Open.Click += new System.EventHandler(this.OpenButton_Click); 
+0

Czy jest to UserControl lub Custom Control, w skrócie dziedziczysz po Button. –

+0

To jest UserControl z System.Windows.Forms.Button zadokowany w środku, aby przejąć cały widok kontroli. – NoahWillCrow

Odpowiedz

5

Częścią problemu jest to, że ciebie zastępują właściwość UserControl'sText. Jeśli nazwiesz swoją własność inną nazwą niż Text, taką jak myText, to zadziała. Aby rozwiązać problem, musisz użyć Text spróbuj dodać atrybut DesignerSerializationVisibility do swojej własności, który powinien się tym zająć.

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]