C# Windows forms textbox.text nicht ändern
public partial class A : UserControl
{
private string _x;
public string X {
get { return _x; }
set {
this._x = value;
this.textBox1.Text = this._x;
}
}
public partial class B : WinForm
{
public B() {
//Add usercontrol A to Groupbox1
//Set A.X = "hello world"
}
}
public class MainForm: WinForm
{
public void button1_Click(....) {
B bForm = new B();
bForm.ShowDialog();
}
}
Zur design-Zeit, habe ich die textbox1.Text="Hallo". In der Main-Klasse, ich habe eine Schaltfläche, öffnet sich ein neues form B und form B ich habe ein Gruppenfeld hinzufügen dieses Steuerelement Ein, und ändern Sie die X-Eigenschaft-Wert = "Hallo Welt", aber die textBox1.Text ändert sich nicht auf der UI. Wenn ich den Haltepunkt nach der textbox1.Text = dieser._x, es zeigt den Wert geändert haben, um "hello world" aber es ist nicht reflektiert auf das UI?
Warum? Und wie man es beheben?
Dank einem Haufen.
- Möchten Sie den text der textbox gleiche wie die X-als ordnen Sie
this.txtBox1.Text = this._x;
- Danke. Ich aktualisiere einfach die Frage.
- Benutzt du dataBinding?
- Nein, ich glaube nicht, verwenden Sie Datenbindung. Frage mich, warum das eingestellt .Text direkt nicht funktioniert.
- Zeigen Sie Ihre ` //Anzeigen der Form B` code
- Ich habe gerade aktualisiert.
- Nicht sehen, Ihr B-Konstruktor-code, aber Bedenken Sie, dass Ihre
X
Eigenschaft serialisiert inInitializeComponent
Methode und wenn SieX
vorInitializeComponent
dann wird es gelöscht werden, inInitializeComponent
Methode. - Es sieht aus, als ob dieser Wert wird überschrieben, nachdem Sie ihn festgelegt haben. Ich würde versuchen, alle Verweise auf
textBox1
und setzen Sie einen Haltepunkt in jeder Zeile, wo der Text-Eigenschaft geändert wird (wenn es solche Linien). Wenn Sie etwas nicht finden so, ich möchte hinzufügen, ein TextChanged-Ereignis mit einer einfachen Methode mit nur einem Haltepunkt, um zu verstehen, Wann/wo der Wert geändert wird. - ich werde auch ein paar weitere tests morgen. Post wird später zu aktualisieren.
- Haben Sie einen Blick auf diese & es ist eine perfekte Lösung:stackoverflow.com/questions/2881409/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Vermutung ist (da ich nicht alle code, und es ist alles, wie Ratespiel 8)) - es ist
InitializeComponent
Methode inclassB
. DaX
Eigenschaft nicht habenDesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
Attribut serialisiert wird inInitializeComponent
Methode mit einem leeren string - also das löschen zuvor explizit Wert legen.