Autor Beitrag
Chiyoko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: So 24.04.11 18:08 
Huhu,

mein Problem besteht darin, wie die Überschrift schon sagt, dass es mir
nicht möglich ist, bei einem Buttonklick "alle" Controls der Form
neu zu zeichnen und somit auch Texte in anderen Sprachen anzuzeigen.

Ich muss immer erst das jeweilige Control anklicken oder aber
ein anderes Control anklicken um das, was ich umschalten will,
umzuschalten.

Mit
ausblenden Quelltext
1:
2:
3:
Invalidate(true);
Refresh();
Update();

klappt es nicht.
Ich habe nur eine Form.

Bitte um Rat.Danke.
Oliver M.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109
Erhaltene Danke: 1

Win 8 CP
VS 11 Beta
BeitragVerfasst: Mo 25.04.11 15:55 
Hi,
warscheinlich gibt es dafür eine Spezialmethode, aber ich kenne sie nicht. Du kannst doch einfach alle Steuerelemente in der Form durchgehen. Entweder manuel oder durch eine Schleife:
ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (Control c in this.Controls)
{
  c.Refresh();
}

Falls du Steuerelemente ineinander verschachtelt hast, musst du ein paar von diesen Schleifen ineinander verschachteln.
MfG Oliver

Für diesen Beitrag haben gedankt: Chiyoko
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Mo 25.04.11 16:42 
Ja, die Vermutung hatte ich auch schon und soviele sind es ja nicht.
ich nahm an, das es einen einzigen befehl geben könnte, aber wenn dem
so ist, dann dank ich dir trotzdem.
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Do 28.04.11 14:00 
Das funktioniert leider genauso wenig.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
       private void sprache_button(object sender, EventArgs e)
        {
            if (sender == toolStripMenuItem2)
            {
                DE = true; ENG = false;

                for (int i = 0; i < this.Controls.Count; i++)
                {
                    this.Controls[i].Refresh();
                    for (int j = 0; j < this.Controls[i].Controls.Count; j++)
                    {
                        this.Controls[i].Controls[j].Refresh();
                    }
                }
            }
            else if (sender == toolStripMenuItem3)
            {
                DE = false; ENG = true;

                for (int i = 0; i < this.Controls.Count; i++)
                {
                    this.Controls[i].Invalidate();
                    for (int j = 0; j < this.Controls[i].Controls.Count; j++)
                    {
                        this.Controls[i].Controls[j].Invalidate();
                    }
                }
            }


Weder mit Refresh noch mit Invalidate.Update ist das selbe.
Da es aber umgestellt wird, sobald ich einen neuen Tab anklicke, scheints mit einem Event zusammen zu hängen.
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Do 28.04.11 16:09 
Ok, problem geloest, es funktioniert einwandfrei ohne dass ich
jetzt auf protected overwrite onPaint zurueckgreifen musste.

Mein Fehler lag, wie schon erwähnt, im falschen Event, ich hab
einfach die Controls, die verändert werden sollen, ins button event
gepackt, die controls durchlaufen und auf invalidate gestellt.

Nur die zur laufzeit erstellten Controls sind mir noch ein Dorn im Auge aber
das bekomm ich denke ich auch hin.
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: So 01.05.11 14:33 
Noch eine Frage zum zeichnen /updaten von Textboxem.

Ich möchte nicht nur die Controls updaten, sondern auch die
Textboxen inneralb, nur irgendwie passiert nichts.

Folgendes funktioniert:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
foreach (Control c in panel.Controls)
{
   if(c.GetType() == typof(RichTextBox))
   {
      c.resetText();
   }
}


Aber ich möchte den Text wechseln und nicht löschen.
Update,invalidate und refresh funktioniert nicht.
Weitere Funktionen/methoden sind mir nicht bekannt.
Der text sollte auf Buttoncklick geändert werden.

Hat jemand bitte einen Ratschlag?



EDIT;
Ich muss rausfinden, welcher TreeViewNode angeklickt wurde.
Den dann einfach nochmal selektieren per (automatisch), dann
sollte es gehen.Aber erstmal muss ich rausfinden, wie.

Ok, nicht das optimalste, aber es geht:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
foreach (Control c in panel.Controls)
{
   if(c.GetType() == typof(RichTextBox))
   {
      TreeNode nowNode = treeView1.SelectedNode;
      treeView1.SelectedNode = treeView1.SelectedNode.Parent;
      treeView1.SelectedNode = nowNode;
   }
}