Entwickler-Ecke

WinForms - Form Width ändert sich nicht!


erfahrener Neuling - Mo 04.04.16 09:08
Titel: Form Width ändert sich nicht!
Hallo,

diesmal brauch ich euren Rat. Mein Problem macht diesmal keinen Sinn und ich komm nicht drauf. Vllt hilft es ja, wenn ihr den Code seht, ich versteh's nicht.

Zum Problem: eigentlich ganz simple Sache, ich wollte am Anfang des Programms Werte für die Höhe und Breite der Form aus einer Datei lesen und damit dann die Form-Variablen deklarieren. Am Programmende werden die aktuellen Werte wieder in die Txt-Datei geschrieben.

Also kurz gesagt: Das Programm soll sich merken, welche Fenstergröße man beim letzten Mal vor dem Schließen verwendet hat.

Dabei kam es jetzt jedes(!) Mal dazu, dass die Werte zwar richtig ausgelesen wurden, aber die Breite war trotzdem immer die, die ich im Designer angegeben hab. Bin verwirrt, schreibfehler konnte ich eigentlich ausschließen.

Hier der Code beim Abrufen der Werte in Mainform_Shown:

C#-Quelltext
1:
2:
3:
4:
5:
this.formHeight = Tools.GetValueFromFile("formheight",this.configFilePath);     //ließt die Werte, für die
this.formWidth = Tools.GetValueFromFile("formwidth",this.configFilePath);       //letzte Fenstergröße aus der config

this.Height = Convert.ToInt32(this.formHeight);     //deklariert die Mainform-Size-Variablen
this.Width = Convert.ToInt32(this.formWidth);       //mit den Werten aus der config

Die Variablen formHeight und formWidth werden per Mainform_SizeChanged-Event wieder geändert.

Das Abspeichern funktioniert auch fehlerfrei.

Also: Hat einer von euch vielleicht eine Idee woran es liegen könnte, dass die Breite immer mein standard-entwurf-Wert ist? (obwohl ich nicht glaube, dass es am Code liegt)

Moderiert von user profile iconChristian S.: Beiträge zusammengefasst

Also nochmal um das zu verdeutlichen: Alles funktioniert, nur bei

C#-Quelltext
1:
this.Width = Convert.ToInt32(this.formWidth);                    
nimmt er den Standard-Wert und nicht den von formWidth


erfahrener Neuling - Mo 04.04.16 10:43

Also ich hab's jetzt mit

C#-Quelltext
1:
this.Size = new System.Drawing.Size(Convert.ToInt32(this.formWidth), Convert.ToInt32(this.formHeight));                    
gelöst (funktioniert einwandfrei), aber trotzdem weiß ich noch nicht, warum das mit Height und Width nicht funktioniert hat.

Kann mir das vielleicht einer erklären, der sich damit auskennt?


Christian S. - Mo 04.04.16 10:47

Die Zuweisung zu Height dürfte das SizeChanged-Ereignis auslösen und dann steht in formWidth wieder der alte Wert drin.


erfahrener Neuling - Mo 04.04.16 13:48

Oh stimmt. Das mit dem Event hab ich mal wieder nicht bedacht ;)


Delete - Mo 04.04.16 15:43

- Nachträglich durch die Entwickler-Ecke gelöscht -


erfahrener Neuling - Di 05.04.16 10:14

Ok das mit den Settings und der app.config wusste ich noch nicht. Ich habe mir dafür (wie du es schon erwähnt hast) eine eigene Klasse geschrieben, die auch ganz gut funktioniert und super einfach ansprechbar ist (als kleine Übung :)).