none
Bestimmtes Wort aus Textbox entfernen, wenn CheckBox UnChecked wird RRS feed

  • Frage

  • Hallo zusammen,

    ich hoffe ihr könnt mir weiterhelfen.

    Ich habe hier 5 Checkboxen. Wenn ich diese klicke, dann lasse ich die einzelnen Wörter in eine TextBox schreiben. Leider fällt mir nicht ein, wie ich es anstelle mit UnChecked dieses Wort wieder aus der TextBox zu entfernen.

    XAML:

    <StackPanel Grid.Column="0" Margin="0 0 10 0"> 
       <CheckBox x:Name="ChkBoxWeld" Checked="ChkBox_Checked" Unchecked="ChkBoxWeld_Unchecked" Content=" Weld" />
       <CheckBox x:Name="ChkBoxAssembl" Checked="ChkBox_Checked" Content=" Assembly" />
       <CheckBox x:Name="ChkBoxPlasma" Checked="ChkBox_Checked" Content=" Plasma" />
       <CheckBox x:Name="ChkBoxLaser" Checked="ChkBox_Checked" Content=" Laser" />
       <CheckBox x:Name="ChkBoxPurchase" Checked="ChkBox_Checked" Content=" Purchase" />
    </StackPanel>

    C# (Wenn ChkBox checked dann in Zeile Lenght schreiben)

    private void ChkBox_Checked(object sender, RoutedEventArgs e)
       {
          TxtBoxLength.Text += (string)((CheckBox)sender).Content;
       }

    C#

    private void ChkBoxWeld_Unchecked(object sender, RoutedEventArgs e)
       {
          ???
       }


    Was also muss ich machen, dass ich aus der TxtBoxLength:

    Weld Assembl Plasma

    Weld wieder rausbekomme, wenn die ChkBoxWeld unchecked wird.

    Vielen Dank schonmal. Rafael




    Donnerstag, 15. August 2019 07:45

Antworten

  • Hallo Rafael,

    ich würde das ganz anders angehen.

    public class ...
    {
        public List<string> CheckedItems { get; set; } = new List<string>();;
    
        ...
    
        private void ChkBox_Checked(object sender, RoutedEventArgs e)
        {
            CheckedItems.Add( (string)((CheckBox)sender).Content );
            this.UpdateText();
        }
    
        private void ChkBox_Unchecked(object sender, RoutedEventArgs e)
        {
            CheckedItems.Remove( (string)((CheckBox)sender).Content );
            this.UpdateText();
        }
        
        private void UpdateText()
        {
            TxtBoxLength.Text = String.Join( " ", CheckedItems.Distinct() );
        }
    }


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Donnerstag, 15. August 2019 11:36
    Moderator

Alle Antworten

  • TxtBoxLength.Text = TxtBoxLength.Text.Replace((string)((CheckBox)sender).Content, String.Empty)
    Ist die Textbox denn anderweitig beschreibbar? Oder wird hier nur je nach angehakter Checkbox Text gesetzt? Die Reihenfolge der Texte wird sich dann eh ändern, wenn du die Checkboxen in irgendeiner beliebigen Reihenfolge klickst. Alternativ könnest du auch alles in eine Methode auslagern, welche die Checkboxen nach checked/unchecked abfragt und entsprechend dann einen Text zusammen baut und in die TextBox setzt.
    Donnerstag, 15. August 2019 10:09
  • Hallo Rafael,

    ich würde das ganz anders angehen.

    public class ...
    {
        public List<string> CheckedItems { get; set; } = new List<string>();;
    
        ...
    
        private void ChkBox_Checked(object sender, RoutedEventArgs e)
        {
            CheckedItems.Add( (string)((CheckBox)sender).Content );
            this.UpdateText();
        }
    
        private void ChkBox_Unchecked(object sender, RoutedEventArgs e)
        {
            CheckedItems.Remove( (string)((CheckBox)sender).Content );
            this.UpdateText();
        }
        
        private void UpdateText()
        {
            TxtBoxLength.Text = String.Join( " ", CheckedItems.Distinct() );
        }
    }


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Donnerstag, 15. August 2019 11:36
    Moderator