Window Refresh in C#



  • Hallo,

    ich versuche in meinem Programm nach Änderungen von Text-Labels in der GUI die Oberfläche neu zeichnen zu lassen (ansonsten sieht man die Änderungen ja nicht).

    Wenn ich dazu allerdings

    Form1.ActiveForm.Refresh();

    verwende, hängt sich meine Anwendung regelmäßig auf.

    Wie wäre denn der Richtige weg die Oberfläche neu zu zeichnen, oder gibt es eine möglichkeit das von alleine machen zu lassen wenn ich einen teil ändere ?



  • Versuchs mal ohne den Teil in der Mitte.
    Bist du sicher, dass es wirklich daran scheitert? Oder sind vielleicht in der Paint-Routine irgendwo Fehler drin?



  • Hallo,

    wenn ich den mittleren Teil weglasse, sagt mir der Compiler als Fehlermeldung, Das für die Methode ein Objektverweis erforderlich ist.

    Wo finde ich denn die Paint Routine ?
    Selbst geschrieben habe ich da nichts...



  • Wenn Du es von einer anderen Form machst, dann so:

    Form1 f = new Form1();
    f.Refresh();
    

    wenn es von derselben Form ausgeht dann so:

    this.Refresh();
    


  • Cyberforce,

    Cyberforce schrieb:

    ...hängt sich meine Anwendung regelmäßig auf.

    "Aufhängen" hört sich nach Endlosschleife an. Hast Du mal einen Haltepunkt auf die Refresh-Zeile gesetzt, um zu prüfen, ob das Refresh die Ausführung der Methode erzwingt, in der das Refresh steht?
    Von wo aus rufst Du das Refresh denn auf?



  • Hallo,

    also teilweise lag es wohl am falschen Aufruf, wenn ich jetzt den Befehl von Dominic verwende

    this.Refresh();

    oder aus einer anderen Klasse heraus

    Form1 f = new Form1();
    f.Refresh();

    dann läuft das Programm durch.

    Allerdings ruft mein tool einige sehr Ressourcen fressende Anwenfdungen auf, scheinbar hat das Refresh dann keine Auswirkungen, die Gui ist manchmal dann auch nur weis, so als ob es abgestürzt wäre.

    Hat jemand eine Idee wie ich das umgehen könnte ?



  • Hi!

    Ich weiß ja nicht was du machst, aber wie wäre es mit Multithreading?

    Code-Hacker



  • Cyberforce schrieb:

    ...scheinbar hat das Refresh dann keine Auswirkungen, die Gui ist manchmal dann auch nur weis, so als ob es abgestürzt wäre.

    Hat jemand eine Idee wie ich das umgehen könnte ?

    na vielleicht hilft das hier:

    Form1 f = new Form1(); 
    ....
    f.Refresh();
    Application.DoEvents();
    


  • Hallo,

    vielen Dank, wenn ich das in meiner Form Klasse anwende mit (this...) klappt es !

    Wenn ich das aber aus einer anderen Klasse aufrufe geht es nicht, liegt das dann an dem Application.DoEvents() Aufruf ?



  • I think taht's the problem

    you use more UI example Button ,TextBox and and

    textBox1.Refresh(); or
      button1.Refresh();
    

    with

    this.Refresh();
    

    actualize u only the Window Content so the Panel ?


Anmelden zum Antworten