Aktualisierung der checkbox mit Invoke

Gast #723643
Lesenswert?

Guten Morgen...

Ich habe eine grafische Oberfläche mit Visual Studio erzeugt die sich 
leider nicht mit meinen eigenen Methoden aktualisieren lässt.
Mit meiner checkbox kann ich den Wert "true" oder "false" einstellen. 
Diese Werte will ich aber mittels meine selbstdefinierten Methode 
setzen.
Das funktioniert aber nicht!
1
// Die button1_Click Methode funktioniert und setzt den Haken an der Checkbox !!
2

3
        private void button1_Click(object sender, EventArgs e)
4
        {  if(xy == 0)
5
           { SETBOX = true; xy = 1; } 
6
           else { SETBOX = false; xy = 0; }
7
                      
8
        }
9

10
// Die SetCheckBox Methode funktioniert nicht !!
11
    
12
    private void SetCheckBox()
13
    {   if(xy == 0)
14
        { SETBOX = true;  xy = 1; } 
15
        else { SETBOX = false; xy = 0; }
16
    }
17

18
       public bool M_SETBOX ;
19
    
20
       public bool SETBOX
21
        {
22
            get
23
            {
24
                return this.M_SETBOX;     
25
               
26
            }
27
            set
28
            {
29
                if (value != this.M_SETBOX)
30
                {
31
                    this.M_SETBOX = value;    
32
                    NotifyPropertyChanged("SETBOX");
33
                }
34
            }
35
        } 
36

37
     
38
        public event PropertyChangedEventHandler PropertyChanged;
39

40
        private void NotifyPropertyChanged(String info)
41
        {
42
            if (PropertyChanged != null)
43
            {
44
                PropertyChanged(this, new PropertyChangedEventArgs(info));
45
            }
46
        }

Beide Routinen stehe im selben Quelltext. Jetzt vermute ich das mein 
Bildschirm mit der Methode SetCheckBox nicht aktualisert wird. Ich habe 
gelesen das man mit Invoke das Bild aktualisiern kann.
Hat jemand von Euch eine Ahnung wie das funktioniert ?
Was muss ich ändern, damit beide Routinen die selbe Funktion auslösen ?

Gruss Klaus
#723703
Lesenswert?

Was treibst du denn da alles?
Generell ist es in den meisten Fällen unklug Daten parallel
zum eigentlichen Anzeigeelement in einem Dialog (oder Form)
zu halten.

Auf deinem Dialog (Form) ist doch die Checkbox vorhanden.
In deiner Dialog (Form) - Klasse gibt es daher ein Objekt
welches für diese Checkbox steht. Und dieses Objekt hat
Methoden um den momentanten Check-State abzufragen bzw. neu
zu setzen. Das Property SETBOX sollte sich daher direkt
an dieses Checkbox Objekt wenden, wenn es denn aktuellen
Zustand abholen will, bzw. den CheckState direkt in diesem
CheckBox Objekt setzen wenn ein neuer Wert gesetzt wird.
Es ist daher nicht notwendig (und wie gesagt in den meisten
Fällen unklug) sich da noch zusätzlich eine boolsche
Variable dafür zu halten. Was du da mit dem NotifyPropertyChanged
vorhast, ist mir ehrlich gesagt nicht ganz klar.

Und nein: Invoke löst ein ganz anderes Problem. Invoke brauchst
du nur dann wenn Multitasking ins Spiel kommt, weil die Controls
nicht threadsave sind und Veränderungen an einem Control immer
nur aus demselben Thread heraus gemacht werden sollen/dürfen,
in dem das Control auch erzeugt wurde. Mittels Invoke kann man
diesen Thread Wechsel erreichen.
Gast #723752
Lesenswert?

Hallo !

Ich möchte gerne die Checkbox über das Databinding verändern können.
Die Variable SETBOX ist mit der Checkbox über das Databinding mit 
einander verbunden. Jetzt müßte ich doch einfach den Wert von SETBOX auf 
"true" oder "false" setzen, damit diese Aktion ausgeführt wird. So ist 
mein Gedankengang.
Die Routine buttion1_Click war nur zum gegentest ob meine Funktion 
überhaupt funktioniert.
Mit der SetCheckBox() will ich die Werte verändern.

Das komische ist aber das die eine Routine funktioniert und die andere 
nicht!
Das heißt im Endeffekt, irgendetwas fehlt mir damit meine eignetliche 
SetCheckBox zu 100% arbeitet. Natürlich hast Du recht, ich kann den 
Zustand der checkbox1 auch einfach abfragen.

Aber mit der Kommunikation "Databinding" muss das doch auch gehen ?

Oder ?

Vielen Dank für Deine Mithilfe!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren