ich diesen Code habe in meinem öffentlichen Form1():C# foreach-Kontrollen
foreach (Control c in Controls)
{
if (c is CheckBox)
{
}
}
, was ich bin auf der Suche zu tun, ein Ereignis wird ausgelöst, wenn eine der Checkbox angeklickt wird, spielt es keine Rolle, welcher. so zum Beispiel:
if(CheckBox.Checked == True) {
//do something to the checked checkbox
}
aber natürlich, das den Fehler auslöst, weil ich angegeben haben, die Checkbox:
An object reference is required for the non-static field, method, or property 'CheckBox.Checked'
ist es eine Möglichkeit, um dies? Weil ich das gleiche Ereignis auf jedes einzelne Kontrollkästchen wie folgt angewendet habe:
if (TestBox.Checked == true)
{//Do Something}
else {//Do Something}
if (TestBox2.Checked == true)
{//Do Something}
else {//Do Something}
was macht meinen Code schrecklich ineffizient.
EDIT: nur dieser Iterationsschleifen throug der cb.Checked == falsch und ignoriert die sonst ....
foreach (var cb in Controls.OfType<CheckBox>())
{
if (cb.Checked == false)
{
cb.BackgroundImage = Image.FromFile("M:\\Phase IX (Jeremy, Sandima)\\Icons\\ CheckboxUncheck_18x.png");
cb.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
cb.FlatAppearance.BorderSize = 0;
// make all four (!) BackColors transparent!
cb.BackColor = System.Drawing.Color.Transparent;
cb.FlatAppearance.CheckedBackColor = Color.Transparent;
cb.FlatAppearance.MouseDownBackColor = Color.Transparent;
}
else
{
cb.BackgroundImage = Image.FromFile("M:\\Phase IX (Jeremy, Sandima)\\Icons\\CheckBox_18x.png");
cb.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
cb.FlatAppearance.BorderSize = 0;
// make all four (!) BackColors transparent!
cb.BackColor = System.Drawing.Color.Transparent;
cb.FlatAppearance.CheckedBackColor = Color.Transparent;
cb.FlatAppearance.MouseDownBackColor = Color.Transparent;
}
}
meine Kontrollkästchen sind nicht als in einer Liste @rbaghbanli gemeint – Krono