Entwickler-Ecke

WinForms - Columns an Fenstergröße anpassen


g!ml! - Di 30.09.08 10:58
Titel: Columns an Fenstergröße anpassen
Hallo,
ich würde gern wissen, wie man es hinbekommen kann dass die Colums eines LisView sich der Größe der gesamten Form anpassen.

Danke im Vorraus!

mfg

g!ml!


bakachan - Di 30.09.08 11:14

Eine Möglichkeit wäre im SizeChanged-Event des Listviews die Breiten der Columns zu setzen (musst da natürlich auch berechnen).

Vielleicht gibts auch was einfacheres aber mir fällt da gerade keine automatische funktion zu ein.


g!ml! - Do 02.10.08 10:12

Vielen Dank für den Tipp, es hat funktioniert:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public void Preise_lstvw_SizeChanged(object sender, System.EventArgs e)
        {
            OENR_h.Width = (Preise_lstvw.Width / 8) - 10;
            FMAutoteile_h.Width = (Preise_lstvw.Width / 8) + 16;
            Alanko_h.Width = (Preise_lstvw.Width / 8) - 10;
            Diff_Alanko_h.Width = (Preise_lstvw.Width / 8) - 10;
            Yabazzo_h.Width = (Preise_lstvw.Width / 8) - 10;
            Diff_Yabazzo_h.Width = (Preise_lstvw.Width / 8) - 10;
            PWANL_h.Width = (Preise_lstvw.Width / 8) + 16;
            Diff_PWANL_h.Width = (Preise_lstvw.Width / 8) + 16;
        }


JüTho - Do 02.10.08 11:34

Kleiner Vorschlag zur Ergänzung: Eine Berechnung, die mehrfach genutzt wird, sollte einmal am Anfang ausgeführt werden. Das dürfte etwas schneller sein (wenn auch nur im Mikrosekunden-Bereich). Wenn Dir später noch eine andere Anpassung einfällt, musst Du nur diese eine Stelle ändern statt in jeder Zeile.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
public void Preise_lstvw_SizeChanged(object sender, System.EventArgs e)
        {
            int diff = Preise_lstvw.Width / 8;

            OENR_h.Width = diff - 10;
            FMAutoteile_h.Width = diff + 16;
//  usw.
        }

Gruß Jürgen


g!ml! - Mo 06.10.08 11:16

Danke Jürgen, ich hab's angepasst ^^