none
TextBox Input soll beim Wechseln der TreeViewNode bestehen bleiben RRS feed

  • Frage

  • Hallo zusammen,

    folgendes Problem:

    habe eine TreeView und jede Node hat eine eigene TextBox. 

    Wie kriege ich das hin, dass der Input des Users in die TextBox nicht verloren geht, wenn ich zwischen den Nodes springe. 

    Benutze das LeaveEvent für die TextBox.

    Bin für jede Hilfe und Anstoß in die richtige Richtung dankbar. Beispielcode wär auch sehr schön :).

    Regards 

    EDE

    Mittwoch, 19. Mai 2021 06:37

Antworten

  • Ich weiß nicht ob ich dir helfen kann bzw. dich richtig verstanden hab aber wieso hast du für jeden Node eine Textbox.
    Du hast ein TreeView und eine TextBox. Wenn du ein Node asuwählst sollte der TextBox.Text nicht verändert werden auss du setzt das irgendwo.

    Um Werte zwischen den Node-Wechseln zu speichern  kannst generell die Events vom Treeview verwenden und nicht TextBox.
    Es gibt die Events BeforeSelect und AfterSelect. Schau dir die Events mal an
    https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treeview.afterselect?view=net-5.0
    https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treeview.beforeselect?view=net-5.0

    string meinWertDerNichtVerlorenGehenSoll = null;
    private void TreeView1_AfterSelect(System.Object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
        textBox.Text = meinWertDerNichtVerlorenGehenSoll;
    }
    private void TreeView1_BeforeSelect(System.Object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
        meinWertDerNichtVerlorenGehenSoll = textBox.Text;
    }


    Lg
    Ge.Ri


    Mittwoch, 19. Mai 2021 07:25
  • Hi,
    falls es sich um eine WPF oder UWP Anwendung handelt, dann binde die TextBox im Template einfach mit TwoWay an die betreffende Eigenschaft im Datenobjekt (des Knotens). Mit UpdateSourceTrigger=PropertyChanged wird jeder Tastenanschlag in das Datenobjekt übertragen, ansonsten wird nur beim Verlassen der TextBox der geänderte Text übertragen.

    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Mittwoch, 19. Mai 2021 07:30

Alle Antworten

  • Ich weiß nicht ob ich dir helfen kann bzw. dich richtig verstanden hab aber wieso hast du für jeden Node eine Textbox.
    Du hast ein TreeView und eine TextBox. Wenn du ein Node asuwählst sollte der TextBox.Text nicht verändert werden auss du setzt das irgendwo.

    Um Werte zwischen den Node-Wechseln zu speichern  kannst generell die Events vom Treeview verwenden und nicht TextBox.
    Es gibt die Events BeforeSelect und AfterSelect. Schau dir die Events mal an
    https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treeview.afterselect?view=net-5.0
    https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treeview.beforeselect?view=net-5.0

    string meinWertDerNichtVerlorenGehenSoll = null;
    private void TreeView1_AfterSelect(System.Object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
        textBox.Text = meinWertDerNichtVerlorenGehenSoll;
    }
    private void TreeView1_BeforeSelect(System.Object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
        meinWertDerNichtVerlorenGehenSoll = textBox.Text;
    }


    Lg
    Ge.Ri


    Mittwoch, 19. Mai 2021 07:25
  • Hi,
    falls es sich um eine WPF oder UWP Anwendung handelt, dann binde die TextBox im Template einfach mit TwoWay an die betreffende Eigenschaft im Datenobjekt (des Knotens). Mit UpdateSourceTrigger=PropertyChanged wird jeder Tastenanschlag in das Datenobjekt übertragen, ansonsten wird nur beim Verlassen der TextBox der geänderte Text übertragen.

    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Mittwoch, 19. Mai 2021 07:30
  • Hallo Ede,

    Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben. Solltest Du noch Rückfragen haben, gib bitte Bescheid.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 10. Juni 2021 12:15
    Moderator