Checkboxen unt textboxen

hallo,

ich hab ein problem, und zwar:

ich will wenn in einer checkbox ein hackerl ist, dass er dann den wert der textbox zu einer summe adiert. Es sind ca. 20 checkboxen und ca. 20 textboxen und es können entweder alle oder nur ein paar angehackerlt sein. wie mach ich das am besten?

mfg

michael

hi,
mach ein Usercontrol mit einer CheckBox und einer TextBox.
Platziere diese 20x auf deiner Form, und benutze einen gemeinsamen EventHandler.

Gruss
Giuseppe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi,

wenn ich wüsste wie… :smile:

aber ich habs jetzt mal so probiert:

foreach(CheckBox checkBox in this.Controls)
{
if(checkBox.Checked)
{
foreach(TextBox textBox in this.Controls)
{
dSum = Convert.ToDouble(textBox.Text) + dSum ;
}
}
}

nur geht (noch)nicht.
fehler:
An unhandled exception of type ‚System.InvalidCastException‘ occurred in Sicherheitsbeauftragter.exe

Additional information: Specified cast is not valid.

dabei unterlegt er mir "CheckBox checkBox " gelb.

keine ahnung was das heisst… bitte um rat.

mfg

michael

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi

> foreach(CheckBox checkBox in this.Controls)

das geht nicht weil in this.Controls vermutlich nicht nur CheckBoxen vorhanden sind… versuch es so:

foreach(Control c in this.Controls)
{
 if(c is CheckBox)
 {
 // do work
 }

}

dein code macht ausserdem nicht wirklich viel sinn :smile:
gruss

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi!

Anderer Vorschlag (meiner Meinung nach sinnvoller):
Mach’ Dir ein eigenes Steuerelement „CheckedTextBox“, das einfach eine CheckBox mit einem Textfeld kombiniert.
Verpasse dem Teil ein Property „Checked“ (=der Checked-Wert der CheckBox) und ein Property „Text“ (=der Text-Wert der TextBox) und häng’ dann einfach 20 dieser UserControls auf Deinen Dialog.
Dann kannst Du nämlich auch wieder einfach über die Controls laufen und folgendes machen:

int val = 0;
foreach(Control c in Controls)
{
 if (c is CheckedTextBox)
 {
 CheckedTextBox ctb = c as CheckedTextBox;
 if (ctb.Checked)
 val += int.Parse(ctb.Text);
 }
}

Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Anderer Vorschlag (meiner Meinung nach sinnvoller):
[…]

Martin

Hoppla, habe ich doch glatt den anderen, gleich lautenden Vorschlag übersehen.
Sorry wegen des Doppelpostings,
Martin