Toon posts:

[C#] Disable TabPage

Pagina: 1
Acties:
  • 232 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Op mijn form (Winforms) staat een TabControl die bestaat uit 2 TabPages. Nu wil ik ervoor zorgen dat op sommige momenten (bv. als er niets staat geselecteerd op TabPage1), dat de gebruiker niet naar TabPage2 kan gaan. Ik dacht dit te doen via een simpele TabPage2.Enable = false ofzo, maar blijkbaar wordt dit niet ondersteund. (terwijl ik wil een EnableChanged event terugvind?)

Iemand ideëen om een TabPage niet selecteerbaar te maken?

  • EfBe
  • Registratie: Januari 2000
  • Niet online
De Enable is wel aanwezig maar wordt officieel niet ondersteund in 1.0. Ik meen dat in 1.1. dit is gewijzigd, maar pin me er niet op vast. Wat je kunt doen zijn 2 dingen:

1) een group control op de tabpage plaatsen en DAARIN je controls op de tabpage. Nu kun je deze groupcontrol disablen en daarmee dus in feite je tabpage. De tab is dan nog wel selecteerbaar, maar de user kan niets, wat je in feite wilt bereiken met een disabled tab
2) de tab in code at runtime toevoegen wanneer je dat nodig acht (dus wanneer hij ENABLED) moet zijn, en in code verwijderen uit de tabpage collection wanneer hij disabled moet zijn. Dit heeft als nadeel dat je in .NET v1.0 tegen een bug oploopt in winforms (een van de vele) waarbij controls niet worden ge autoresized op fontsize wanneer je in code een tabpage toevoegt aan een tabcontrol. Heeft iemand dus grote fonts geselecteerd in windows dan hou je bv kleinere lables en past de text er niet in. Voeg je de tab at designtime toe, dan worden de controls wel geautosized voor de grotere fonts.

Ik zou voor optie 1 gaan :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Optie 1 lijkt me ook het best haalbaar, bedankt :)

Ondertussen nog een vraag ivm TabPages: stel dat ik op TabPage1 de mogelijkheid voorzie om een object te editeren via verschillende velden, en de gebruiker wilt naar TabPage2 gaan. Dan moet ik VOORALEER de effectieve switch van TabPage1 naar TabPage2 plaatsvindt, eerst vragen of de wijzigingen moeten worden opgeslagen. Welke event is hiervoor het best bruikbaar? TabIndexChanged is niet buikbaar, want dan is de TabPage reeds veranderd...

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Dat kan niet. Op zich zit het uiteraard weer wat gammel in elkaar die tabcontrol, want het ding ondersteunt geen per-tab events, alleen per control events. TabIndex is overigens niet iets dat met tabpages te maken heeft maar met de tabindex binnen de control (dus de tabstops).

Maar, omdat de tabcontrol bedoelt is voor het plaatsen van controls die eigenlijk bij elkaarhoren maar anders een heel groot scherm nodig hadden op verschillende 'schermen' (de tabs), is dit niet zo erg. Wat jij wilt is dus dingen wijzigen op verschillende tabs die niet iets met elkaar te maken hebben. Dat kan dus niet. Alle tabs werken in principe dus op dezelfde set objects, daar is de control voor bedoeld. Misschien is een wizard control beter?

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com