Laden...

Wpf: Befehl anhand von Checkboxen zusammensetzen

Erstellt von ClaRaCapitano vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.624 Views
C
ClaRaCapitano Themenstarter:in
8 Beiträge seit 2015
vor 8 Jahren
Wpf: Befehl anhand von Checkboxen zusammensetzen

hallo leute!!
bin hier neu und hoffe, dass mir bitte jemand helfen kann...

bin gerade in einem Praktikum und habe die aufgabe bekommen, eine Anwendung zu schreiben (wpf, c#), mit der sich der user mithilfe von Checkboxen einen cmd-Befehl für RoboCopy "zusammenklicken" kann....
der ausgewählte quell- und zielpfad wird in eine TextBox gespeichert in der zusätzlich die ausgewählten befehle der Checkboxen "drangehängt" werden...
soweit funktioniert das auch alles....

jetzt zu meinem Problem, an dem ich doch schon lange hänge:
ich würde nun gerne realisieren, dass, wenn der user merkt, dass er eine Checkbox versehentlich ausgewählt hat, der text, der bei der Auswahl der Checkbox wieder aus der TextBox geslöscht wird....
das heißt: steht in der TextBox zusätzlich zum Quell- und Zielpfad der Befehl /R, dann soll im fehlerfall bei unchecken der Checkbox nur /R gelöscht werden...

hat da jemand eine Idee??

danke im vorraus!!

Mfg, ClaRaCapitano

2.207 Beiträge seit 2011
vor 8 Jahren

Hallo ClaRaCapitano,

ganz im Ernst: Ich schnalls nicht.

ich würde nun gerne realisieren, dass, wenn der user merkt, dass er eine Checkbox versehentlich ausgewählt hat, der text, der bei der Auswahl der Checkbox wieder aus der TextBox geslöscht wird....

Wann merkt der User das denn? Wenn er den Befehl gestartet hat und dann merkt, dass das Ergebnis falsch ist?

Ich verstehe es so, dass jede Checkbox bei dir mit einem Befehl verbunden ist. Ist das richtig? Du kannst mit Databinding arbeiten und den Checkboxen jeweils ein Property auf deinem VM zuweisen. Bei jedem Set-Aufruf aktualisierst du den Text in der Textbox mit dem Befehl, der der Checkbox zugewiesen ist. Je nachdem, ob das Property gesetzt wurde oder nicht.

Ganz unabhängig davon: Was hast du denn bisher probiert? Wo ist das Problem? Du darfst auch ein bisschen Code posten etc. [Hinweis] Wie poste ich richtig? Punkt 5.

Gruss

Coffeebean

K
89 Beiträge seit 2013
vor 8 Jahren

Wann merkt der User das denn?

Hab es so verstanden, dass der Befehl aus der Textbox gelöscht werden soll, wenn die Checkbox von checked zu uncheched wechselt.
Dafür würde dann einfache in Event benötigt werden, was du doch bestimmt schon hast, da du ja den string nicht zusammenstellen könntest odeR?

C
ClaRaCapitano Themenstarter:in
8 Beiträge seit 2015
vor 8 Jahren

hallo coffeebean,

danke für deine schnelle antwort....
hab mich etwas ungeschickt ausgedrückt... sorry

also, ich meine damit, dass der user einen befehl ausgewählt hat und dann von selbst darufkommt, dass er doch einen anderen befehl wollte....

das ist ein click-Event von einem der befehle:

private void chkR1_Checked(object sender, RoutedEventArgs e)
        {
            string r = " /R:";
                        
            if (chkR1.IsChecked == true)           
                
                {
                    txtCmdBefehl.Text = txtCmdBefehl.Text + r + txtKopiervorgaenge.Text;
                }            
        }

es soll "einfach" nur der Wert, der versehentlich falsch ausgewählt wurde, bei unchecken der Checkbox wieder entfernt werden, ohne dass der zuvor eingetragen Quell- und Zielpfad aus der TextBox gelöscht wird...

ich hoffe, dass es jetzt etwas verständlicher ist...

glg, ClaRaCapitano

1.378 Beiträge seit 2006
vor 8 Jahren

Hallo ClaRaCapitano,

anstatt beim Checked Event den String zu erweitern, würde ich den Inhalt der Textbox bei jeder Änderung komplett generieren lassen. (Anhand der ausgewählten Optionen)

Die Textbox selbst darf dann natürlich nicht mehr editierbar sein und etwaige zusatzeingaben müssen über entsprechende Formularfelder (bei den Checkboxen) eingetragen werden.

Dies hat zur Folge, dass ganz unabhängig ob etwas an- oder abgehackt wird, immer der richtige Command erzeugt wird.

Lg, XXX

//Edit: Ja prinzipiell eh das selbe was Coffeebean gesagt hat... 😛

C
ClaRaCapitano Themenstarter:in
8 Beiträge seit 2015
vor 8 Jahren

danke für eure Bemühungen...

habe das Problem nun so gelöst, dass bei falscher eingabe alles aus der TextBox gelöscht wird... wurde mir dann so aufgetragen...

mir wärs zwar anders lieber gewesen, aber wenns so angeschafft wird... gg

glg,
ClaRaCapitano

5.299 Beiträge seit 2008
vor 8 Jahren

komisches konzept.
Ich sehs auch so wie xxxprod: Der BefehlsText ist immer neu zu generieren, wenn eine der Optionen sich ändert.
Ausserdem sollte der Befehlstext überhaupt nicht in einer Textbox präsentiert werden, sondern Textblock oder was, hauptsache Readonly, damit's nur über die vorgesehenen Optionen manipuliert werden kann.
Und statt bei Falsch-Eingabe alles zu löschen sollte man die Oberfläche so gestalten, dass Falscheingaben garnet möglich sind.

Kennst du YarcGui (Freeware)? das ist auch so ein RoboCopy-Befehl-Generier-Tool - das könnte dir eine Vorlage sein.

Der frühe Apfel fängt den Wurm.

D
985 Beiträge seit 2014
vor 8 Jahren

Und wenn man es vernünftig machen möchte, dann schreibt man sich eine Klasse, wo man alle Einstellungen setzen kann und dann von dieser Klasse den String bekommt, oder eben eine Fehlermeldung, wenn die Einstellungen Unsinn sind.