[C#/WinForms] 2 panels resizen verkeerd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 06:48
Je kan in WinForms anchors, MaxSize, MinSize en dat soort dingen defineren voor vensters van variabele grootte. Nu heb ik zo'n venster, en dat werkt allemaal prima behalve één ding:
Afbeeldingslocatie: http://c.imagehost.org/0278/winforms.png
Als één van de twee panels aan alle kanten geanchored is resized dat panel prima.
Maar als beide panel aan alle kanten geanchored zijn dan resize ze allebij, maar vallen ze over elkaar heen en dat is wat natuurlijk niet mag en niet erg gebruiksvriendelijk is :P
Afbeeldingslocatie: http://c.imagehost.org/0779/winforms.png

Hoe los ik dit op?

[ Voor 4% gewijzigd door Sebazzz op 11-08-2008 16:23 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:23
Ik zou dit oplossen door met DockStyle te werken. Het ene zet je op 'Top' (of Bottom) en het andere zet je op Fill.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 16:16
SplitContainer of een van de panels met DockStyle.Fill docken en de andere DockStyle.Top of DockStyle.Bottom.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:23
Als de user die panels moet kunnen resizen dmv een Splitter is dit idd de makkelijkste / beste oplossing.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 06:48
Dat laatste gaat niet werken. Onderaan het venster staan nog knoppen. Maar die split container is wel een probeersel waard :)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:23
Sebazzz schreef op maandag 11 augustus 2008 @ 16:28:
Dat laatste gaat niet werken. Onderaan het venster staan nog knoppen.
Waarom is dat een probleem ? Je kan in dat geval evt met 3 panels werken. (Eentje Top, Eentje Fill en eentje Bottom).
Maar die split container is wel een probeersel waard :)
Moet de gebruiker van je app die panels kunnen resizen dmv een splitter ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 06:48
Uhhh. Nee. Maar ze resizen dan wel gelijkmatig :P
Afbeeldingslocatie: http://c.imagehost.org/0571/split.png
Deze situatie heb ik met de splitcontainer (geel). splitcontainer.panel1 (rood) breidt niet uit.

Even de andere optie proberen...

edit: Bij het Size() property heb ik de x en y coordinaat verwisselt :X

[ Voor 21% gewijzigd door Sebazzz op 11-08-2008 17:28 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 11-09 10:19
TableLayoutPanel dan, kan je zelf opgeven hoeveel pixels/procent de panels moeten zijn (en kan je ook nog aangeven hoeveel kolommen/rijen)

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 06:48
Goed Fill/Bottom methode werkt ook niet. Er is dan toch maar één panel dat daadwerkelijk resized.

TableLayout is lastig en inflexibel tenzij je in het TableLayout ook panels gaat douwen maar is dat de bedoeling?

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 16:16
Als je een splitcontainer hebt, en je zet de componenten in beide panels op Fill dan blijft de verhouding gelijk als je de container resized.

(Wil je dat niet heb je juist de IsSplitterFixed-, FixedPanel-properties. Heel misschien heb je die per ongeluk geset?)

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 06:48
Nee, ik nam aan dat hun bedoelden om de de dock properties aan te passen zonder SplitContainer te nemen. Bovendien wil ik niet echt een user-adjustable splitter, ik bepaal zelf wel waar de panels ophouden en beginnen.

edit: Okey
Ik heb nu dit: twee panels (van de TS) en die in de twee panels van de splitcontainer gedaan. De splitcontainer en de panels op Full docking gezet. Nu werkt het zoals ik wil.
Is er nog een manier op te voorkomen dat de user de splitter van positie veranderd? (oftewel de splitter te verbergen)

edit2: Dat doe je dus met SplitterFixed :) Probleem opgelost. Nog even een vraagje: Waar gebruik je een flowlayoutpanel voor?

[ Voor 87% gewijzigd door Sebazzz op 11-08-2008 18:47 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:23
Sebazzz schreef op maandag 11 augustus 2008 @ 18:09:
Goed Fill/Bottom methode werkt ook niet. Er is dan toch maar één panel dat daadwerkelijk resized.

TableLayout is lastig en inflexibel tenzij je in het TableLayout ook panels gaat douwen maar is dat de bedoeling?
Schrijf dan je resize code zelf in de Resize event van je form.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 16:16
Met flowlayout komen de verschillende controls gewoon 'achter elkaar' te staan, en worden deze automatisch afgebroken naar een nieuwe regel als er geen plaats meer is.
Vergelijk het met woorden (maar nu controls) in een zin met WordWrap aan.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kan volgens mij bij een splitcontainer de "splitter" ook gewoon 0 pixel maken zodat je ze nog niet kan resizen.

In winforms deed ik het meestal gewoon door het onresize event af te vangen en daar de sizes goed te zetten. In WPF is het trouwens allemaal wat makkelijker, daar kun je in een grid control bijvoorbeeld zeggen dat 1 row * is en de 2 row 2* en dan blijft de verhouding netjes 1/3 tegen 2/3

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 06:48
rwb schreef op maandag 11 augustus 2008 @ 22:47:
Je kan volgens mij bij een splitcontainer de "splitter" ook gewoon 0 pixel maken zodat je ze nog niet kan resizen.

In winforms deed ik het meestal gewoon door het onresize event af te vangen en daar de sizes goed te zetten.
Nee, fout. Splitter kan niet 0 pixels want VS geeft aan dat het >= 1 moet zijn.
In WPF is het trouwens allemaal wat makkelijker, daar kun je in een grid control bijvoorbeeld zeggen dat 1 row * is en de 2 row 2* en dan blijft de verhouding netjes 1/3 tegen 2/3
Ja, maar WPF is brak qua weergave. Die zogenaamde device independent pixels zien er niet uit, net of alles out of focus is, alsof je Cleartype op een CRT monitor ziet.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]

Pagina: 1