[C#] Sizen van Form op Tabcontrol

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een main form. Met een toobar een treeview en een tabcontrol.

Als de gebruiker in de treeview op een node clickt, wordt er bijbehoren een form gecreerd op de tabcontrol.
Dit werkt goed.

Echter als ik het mainform gaat resizen dan gaat het subform niet mee.
Er zijn veel mogelijk om dit voor elkaar te krijgen. Dock, Anchor etc..

Welke zou ik het beste kunnen gebruiken ?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            CurrentForm = new DataForm();

            CurrentForm.TopLevel = false;

            tabControl1.TabPages[0].Controls.Add(CurrentForm);

            CurrentForm.Dock = DockStyle.Fill;

            CurrentForm.WindowState = FormWindowState.Maximized;

            CurrentForm.FormBorderStyle = FormBorderStyle.None;

            CurrentForm.Show();

        }

[ Voor 5% gewijzigd door Verwijderd op 10-06-2015 13:25 ]


Acties:
  • 0 Henk 'm!

  • Ask!
  • Registratie: Februari 2015
  • Laatst online: 26-08 11:07
Anchors beschrijven hoe de control staat ten opzichte van de zijden van de form, terwijl Docking beschrijft hoeveel ruimte een control nodig moet hebben in een form.

http://www.codeproject.co...ng-and-Docking-Properties Hier wat meer info.

Maak hieruit zelf je keuze en kijk wat het beste bij jou applicatie past! :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil mijn form graag scherm vullend hebben.
Dat wil zeggen het dataform moet de volledige tabpage vullen.

Hierdoor is er volgens mij geen verschil tussen Dock en Anchor.

Mogelijk kan ik beter Dock gebruiken omdat Anchor zou suggereren dat ik zou willen slechts op 1 kant wil sizen.

Echter beide werken niet

code:
1
 CurrentForm.Anchor = AnchorStyles.Bottom | AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Top;


code:
1
 CurrentForm.Dock = DockStyle.Fill;

(natuurlijk na elkaar getest)

Acties:
  • 0 Henk 'm!

  • FrietzakNL
  • Registratie: December 2012
  • Laatst online: 06-09 22:38
Als je de juiste grootte instelt zal het beide werken maar dat wil niet zeggen dat het ook allebei daar voor bedoeld is.

Anchor is ervoor bedoeld om het control op de juiste grootte schaal te houden binnen het resizen van een form.

Dock is ervoor bedoeld om een control in de juiste plek te docken. Dit wil dus zeggen als je fill aangeeft dat het control alle ruimte gebruikt en dit ook houd als je de form resized.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat snap ik.

Echter op dit moment reageert mijn subform totaal niet.

Ongeacht of ik nu "Fill" instel of alle anchors aanzet. Het subform reageert niet op resizen.
Ik vraag me af of het subform wel door heeft dat er gesized wordt.

Afbeeldingslocatie: http://i419.photobucket.com/albums/pp274/marjolein62/SizeVanFormInTabControl_zpscbzxqugn.png

[ Voor 26% gewijzigd door Verwijderd op 10-06-2015 20:15 ]


Acties:
  • 0 Henk 'm!

  • Xiphalon
  • Registratie: Juni 2001
  • Laatst online: 12:16
De
C#:
1
            CurrentForm.WindowState = FormWindowState.Maximized;

heb je niet nodig, die blokkeert het resizen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Klopt. Ik heb de regel weggehaald en het resizen werkt nu precies zoals je zou verwachten.
Dank je wel.

Kun je het ook uit leggen ?

Het form instellen van het form als maximized, had toch geen invloed hoeven hebben op het resizen ?
En als je maximized instelt mag je toch, juist verwachten dat het form resized naar de maximale grootte.

Acties:
  • 0 Henk 'm!

  • Xiphalon
  • Registratie: Juni 2001
  • Laatst online: 12:16
Niet direct. Ik vroeg me ook al af waar het aan lag, maar wat ronddebuggen leidt alleen tot de conclusie dat de OnSize events niet afgaan als de windowstate maximized is.

En windowstate is uiteraard bedoeld voor als het een los window is, dus dan is resizen niet nodig kan ik me voorstellen.

[ Voor 26% gewijzigd door Xiphalon op 10-06-2015 21:08 ]


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 11:37

Armageddon_2k

Trotse eigenaar: Yamaha R6

Waarom pak je dit eigenlijk niet op met usercontrols? Die zijn hier toch voor bedoeld?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Daar heb je een punt.

Ik ben voor forms gegaan omdat ik het idee had dat dit makkelijker was bij het in design-time ontwikkelen van de UI.

Ik merk nu dat als ik in mijn sub-form focus heeft, ik 2x moet klikken op de treeview voordat deze reageert. Ook bij het resizen moet ik eerst klikken voor er een resize-pijltje komt.
Werkt kwa gebruikersgemak niet fijn.
Pagina: 1