CheckBox Frage

Hallo zusammen.

Habe eine Frage zu einem CheckBox Problem.
Ich habe auf meinem Formular 7 CheckBox Objekte liegen.

Der Name der 7 CheckBox (name1, name2, name3 usw )

Ich möchte nun mit Hilfe eines string ( „name2“) der erst zur Laufzeit bekannt wird ein neues Objekt vom Typ Checkbox erstellen.

Kann ich nun anhand dieser Info eine Instanz auf die CheckBox( „name2“) machen um mit ihr dann zu Arbeiten?

Wenn Wie


Tausend Dank
 
ich würde es wie folgt versuchen:
nehmen wir an, deine Checkbox liegt auf der Form frm_Main, dann
könntest du in VB.NET wie folgt darauf zugreifen:

Code:
Dim chkBox As System.Windows.Forms.CheckBox 
chkBox = frm_Main.Controls.Item("name2")

funktioniert jedenfalls so bei mir....
 
Das sollte die CheckBox mit dem Namen "CheckBox2" sein:

Visual Basic:
Me.Controls.Find("CheckBox2", True).First()

Alternativ gehts natürlich auch per Hand:

Visual Basic:
          For Each ctrl In Me.Controls
               If TypeOf ctrl Is CheckBox AndAlso DirectCast(ctrl, CheckBox).Name = "CheckBox2" Then
                    DirectCast(ctrl, CheckBox).Checked = True
               End If
          Next

bzw.

Visual Basic:
Dim cb As CheckBox = (From ctrl In Me.Controls Where TypeOf ctrl Is CheckBox AndAlso ctrl.Name = "CheckBox2" Select ctrl).First()

Da gibts x Möglichkeiten, welche die beste ist, musst du selber entscheiden. Natürlich kanns sein, dass eine weniger performant ist als die anderen.

EDIT: Zu langsam :) .
 
Hallo,

danke für die antworten. Ich hab es wie folgt gemacht.
Für mich persönlich nicht die beste Lösung da jedes mal alle objekt auf dem Forma durchlaufen werden. Ich versuch es zwar zu beschleunigen indem ich die schleife abbreche wenn er das Objekt findet, dennoch denke ich nicht optimal zu arbeiten......
:confused:

Code:
....

//Durchlaufe alle Objekte auf Form1
 foreach (Control cc in this.Controls)
            { 
                if (cc is CheckBox)
                {
                    CheckBox CH = new CheckBox();
                    CH = (CheckBox)cc;
                    if (CH.Name == c_clock.WhichDay(weekNr))
                    {
                        if (CH.Checked == true)
                        {
                            WeekIsTrue = true;
                        }
                        else WeekIsTrue = false;
                        break;
                    }
                }

......
 
Zurück