Toon posts:

[C#] alle comboboxen in een groupbox leegmaken

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

Verwijderd

Topicstarter
Als je alle tekstboxen in een groupbox wil leegmaken kan je het volgende voorbeeld gebruiken:

C#:
1
2
3
4
5
6
7
8
//Clear all textbox controls in groupBox.
            foreach (Control control in groupBox.Controls)
            {
                if (control.GetType() == typeof(TextBox))
                {
                    control.Text = "";
                }
            }


Aangezien de control class geen Items.Clear() method bevat is dit voorbeeld niet te gebruiken voor het leegmaken van een combobox. Wat voor oplossing bestaat hiervoor?

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:51
C#:
1
2
3
ComboBox cb = control as ComboBox;
if(cb!=null)
  cb.Clear();

Roomba E5 te koop


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Bijvoorbeeld zoiets:

C#:
1
2
3
4
5
6
7
8
9
            //Clear all combobox controls in groupBox.
            foreach (Control control in groupBox.Controls)
            {
                ComboBox comboBox = control as ComboBox;
                if (comboBox != null)
                {
                    comboBox.Items.Clear();
                }
            }


Je zou ook controleren of de control een combobox is (if control is ComboBox) en daarna expliciet casten ((ComboBox)control).Items.Clear().

[ Voor 4% gewijzigd door OZ-Gump op 07-06-2007 15:30 . Reden: oepsie ;) ]

My personal website


Verwijderd

Topicstarter
Volgens mij werken de bovenstaande voorbeelden alleen als er enkel comboboxen in de groupbox aanwezig zijn. Onderstaand voorbeeld waarbij gebruik wordt gemaakt van het expliciet casten werkt in ieder geval ook als er andere controls in de groupbox aanwezig zijn.

C#:
1
2
3
4
5
6
7
foreach (Control control in groupBox.Controls)
            {
                if (control.GetType() == typeof(ComboBox))
                {
                    ((ComboBox)control).SelectedIndex = -1;
                }
            }


Wat ik alleen nog niet snap is wat deze check: if (control != null) in jullie voorbeelden doet?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Waarom zouden bovenstaande voorbeelden alleen bij enkel comboboxen werken? Je controleert of het een ComboBox is, en als dat zo is roep je de Clear aan. Als het niet zo is, ga je door naar het volgende control. No problem.

Als je de 'as ComboBox' gebruikt, wordt een cast uitgevoerd naar dat type. Als het control dat je checkt geen ComboBox is, krijg je null terug (in plaats van een exception). Dus als je 'as ComboBox' gebruikt, moet je controleren of het antwoord daarvan ongelijk is aan null. Als dat zo is, is het een ComboBox.

Dat is overigens ook de algemeen geaccepteerde methode.

My personal website


Verwijderd

Topicstarter
Maar dan is je voorbeeld volgens mijn niet correct en moet:

code:
1
if (control != null)


vervangen worden door:

code:
1
if (comboBox != null)

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:51
Verwijderd schreef op donderdag 07 juni 2007 @ 14:07:
Maar dan is je voorbeeld volgens mijn niet correct en moet:

code:
1
if (control != null)


vervangen worden door:

code:
1
if (comboBox != null)
Daar heb je gelijk in

Roomba E5 te koop


Verwijderd

Topicstarter
Dat werkt in ieder geval ook prima. Ik snapte al niet in welk geval control een null waarde aan zou nemen. Het voorbeeld van sig69 is overigens wel goed zie ik nu.

Nog een ander vraagje; hoe kan ik een & teken escapen in de text property van een control. C# verandert dit in een _ onder de volgende letter (sneltoets gebruik). Ik wil echter & in de text property tonen. \& werkt iig niet.

[ Voor 7% gewijzigd door Verwijderd op 07-06-2007 14:21 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
&&

(of je zet UseMnemonic op false :Y) )

[ Voor 153% gewijzigd door RobIII op 07-06-2007 14:24 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58
Dit
C#:
1
2
3
if (control.GetType() == typeof(ComboBox))
{
}


kan je trouwens ook samenvatten naar:
C#:
1
2
3
if (control is ComboBox)
{
}

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Of naar dit, dan doe je slechts één maal een cast:
code:
1
2
3
4
ComboBox b = control as ComboBox;
if( b != null )
{
}

https://fgheysels.github.io/

Pagina: 1