Gegevens van verschillende tabPages samenvoegen

Status
Niet open voor verdere reacties.

ifstatement

Gebruiker
Lid geworden
16 apr 2012
Berichten
91
Beste iedereen,

Ik heb op een Form, die een invullijst voorstelt, met een TabControl met verschillende tabPages. Op enkele van die tabPages staat ook weer een TabControl met tabPages. Op de overige staan TextBoxen en ComboBoxen. Is er een simpele methode om de text van al deze Text- en ComboBoxen in één keer in een List in te vullen? Volgens mij lukt het niet met een foreach, omdat je dat dan voor iedere tabPage moet doen. Of ik doe het verkeerd?
Bedankt
 
Hier even de code die ik nu heb:
public void InvullingList(ref List<string> StringList, Control.ControlCollection CollectControls)
{
foreach (Control cntrl in CollectControls)
{
if ((cntrl is TextBox) | (cntrl is ComboBox) | (cntrl is DateTimePicker))
{
StringList.Add(cntrl.Text);
}
}
}
 
Ik heb het al, ik moet met type werken, dus niet bv 'cntrl is TextBox', maar 'cntrl.GetType() == typeof(TextBox)'
 
Nu nog één vraag hierover:

Hoe kun je zien of een Control, als het een CheckBox is, checked is?
Dit is niet mogelijk:

if (cntrl.GetType() == typeof(CheckBox))
{
if(cntrl.checked == true)
{
//Code
}
}
 
Cast het naar een checkbox om de properties te gebruiken.
Code:
if (((CheckBox)cntrl).Checked)
{

}
 
Dank je!
Weet je misschien welke volgorde er wordt aangehouden bij een foreach met controls? Ik heb m'n TabIndex in de gewenste volgorde staan, maar toch komen de textboxen en comboboxen in een willekeurige volgorde in m'n List te staan.
 
hallo,

Ik heb nog steeds een probleem met het toevoegen van tekst uit TextBoxen en ComboBoxen aan een List<string>. Ik heb even een kort voorbeeldje gemaakt van wat ik bedoel, wellicht dat dit meer werkt dan het uit te leggen. Bij de eerste poging om text te 'adden' aan de list krijg ik een NullReferenceException handler. Wat doe ik hier verkeerd?
Bedankt voor je hulp

Mvg

Bekijk bijlage Tabpages.rar
 
Controls worden aan het form toegevoegd, deze volgorde zal het zijn. Kijk eens in de designer.cs class van het form.

voor je null ref:
stringlist.Count ipv 50?

Code:
for (int i = 0; i < StringList.Count; i++)
{
    StringList[i] = "";
}
 
Okay, ik zal daar naar kijken. Die code had ik even verkeerd overgenomen, het is namelijk:
for (int i = 0; i < StringList.Count; i++)
{
StringList.add("");
}

Dit is om de List alvast waarden toe te kennen. Anders volgt er een NullReferenceException, als je een waarde wilt inserten. Of kan dat makkelijker?
 
Hallo,

Ik wil ook de status van checkboxen die op het form staan opslaan. Dat doe ik ongeveer alsvolgt:

public void InvullenList(ref List<string> StringList, Control.ControlCollection Collectie)
{
foreach (Control cntrl in Collectie)
{
if ((cntrl.GetType() == typeof(TextBox)) | (cntrl.GetType() == typeof(ComboBox)) | (cntrl.GetType() == typeof(DateTimePicker)))
{

try
{
StringList.RemoveAt(i);
StringList.Insert(i, cntrl.Text);
}
catch (NullReferenceException)
{
StringList.RemoveAt(i);
StringList.Insert(i, "");
}
}
else if ((cntrl.GetType() == typeof(CheckBox)))
{
if (((CheckBox)cntrl).Checked == true)
{
StringList.RemoveAt(i);
StringList.Insert(i, "true");
}
else
{
StringList.RemoveAt(i);
StringList.Insert(i, "false");
}
}
}

De checkboxen, textboxen en datetimepicker worden in de Stringlist gezet, maar de checkboxen niet. Op de een of andere manier herkent hij geen enkele control als Checkbox.
Ik heb de code toegevoegd voor extra duidelijkheid. Alvast bedankt!

Bekijk bijlage OpslaanVerschillendeTabPages.rar
 
Code:
if ((cntrl.GetType() == typeof(TextBox)) | (cntrl.GetType() == typeof(ComboBox)) | (cntrl.GetType() == typeof(DateTimePicker)))

else if ((cntrl.GetType() == typeof(CheckBox)))

else

Bij deze check van je zal altijd het ELSE gedeelte gebruikt worden, aangezien je tabControl.Controls gebruikt in de method. Deze beval simpelweg alleen 4 tabPages.

en in de OnderliggendeLagen method check je niet voor checkboxen ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan