2017-09-07 2 views
0

Ich habe ein benutzerdefiniertes Textfeld Steuerelement erstellt, ich versuche, einen Standardtext für die Textbox festzulegen. In seinem Konstruktor sage ich also Text = "My Default Text", dies scheint die Steuerung im Entwurfsmodus nicht zu beeinflussen. HierBenutzerdefinierte TextBox - Text-Eigenschaft funktioniert nicht im Konstruktor

ist der Brauch Textbox Code:

using System.Windows.Forms; 

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

Dann lasse ich die Kontrolle über einen Usercontrol, kein Text :(

Control dropped

Hier ist, was ich in den Eigenschaften siehe Kasten: Text Eigenschaft leer

Properties box

+0

Ich glaube nicht, dass der Entwurfsmodus von Visual Studio Steuerkonstruktoren aufruft, wenn sie angezeigt werden. –

+0

Visual Studio ruft den Konstruktor auf, in meiner Situation wird "BorderStyle" angewendet. Ich beobachte, dass es nur die '' Text'' Eigenschaft ist, die –

+0

fehlschlägt Ich probierte eine Taste benutzerdefiniertes Steuerelement '' XButton'', einmal fallen gelassen VS das Steuerelement erstellen und '' "XButton1" '' als Text einstellen und den Text I ignorieren Setze seinen Konstruktor ein. Ich habe '' BackColor = Color.Yellow'' hinzugefügt was funktioniert –

Antwort

0

Das Problem wird hier erklärt: Virtual member call in a constructor

Kurz gesagt zu bekommen, was Sie wollen, Sie eine versiegelte Klasse haben müssen:

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

oder versiegelt Eigenschaft 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

Es funktioniert immer noch nicht, ich denke es ist ein Visual Studio Problem, ich beobachte, dass, wenn ich den Designer schließe und zurück öffne, erscheint der '' Text''. –

+0

Es funktioniert. Sie müssen eine Lösung erstellen, nachdem Sie etwas in den Steuerelementen geändert haben. – Reniuz

+0

Ich tat es, nichts änderte sich; Ich habe die Lösung VS geschlossen, neu gestartet und neu aufgebaut; Das gleiche, der Steuertext ist leer, sobald er gelöscht wird. Ich stelle fest, dass das Problem die Eigenschaft 'Text' ist. Bitte lesen Sie meine Kommentare zu der Frage –

0

Der Text muss eine Variable außerhalb einer Funktion sein.

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

So etwas wie das. Vielleicht gibt es Fehler im obigen Code, weil ich es auf meinem Handy eingegeben habe. Nachdem Sie so etwas haben, legen Sie den Textwert an der gewünschten Stelle fest.

Verwandte Themen