Objektname aus Variable zusammensetzen


mchashi

Mitglied
Hallo Leute,

ich hab folgenden Code:
Code:
private void uncheck_fields(string checkboxName, bool enable) {
    massieren_anzComboBox.Enabled = enable;
    // checkboxName + _anzComboBox.Enabled = enable;
}
Es soll also eine ComboxBox mit dem Namen (Wert) aus einer Variablen angesprochen werden, damit es variabel ist.

Es soll also das möglich sein, was auskommentiert ist und natürlich nicht funktioniert.

Danke schon mal.

Gruß
Sven.
 

Norbert Eder

Erfahrenes Mitglied
Lauf in einer foreach alle Checkboxen von dir durch und frag ab, ob deren Name dein zusammengesetzer Name ist und wenn ja, dann halt Enabled setzen.

Code:
foreach (System.Windows.Forms.CheckBox cb in this.Controls) 
{
  if (cb.Name == (checkboxname + enable)) {
    cb.Enabled = enable;
  }
}
 
Zuletzt bearbeitet:

mchashi

Mitglied
Danke schon mal, hier mal mein Code zur Verdeutlichung:
Code:
private void kuessenCheckBox_CheckedChanged(object sender, EventArgs e)
{
	bool enable;

	if (kuessenCheckBox.Checked)
		enable = true;
	else
		enable = false;

	this.kuessenAnzComboBox.Enabled = enable;
	this.kuessenNoteComboBox.Enabled = enable;
	this.kuessenDatumDateTimePicker.Enabled = enable;
}

private void streichelnCheckBox_CheckedChanged(object sender, EventArgs e)
{
	bool enable;

	if (streichelnCheckBox.Checked)
		enable = true;
	else
		enable = false;

	this.streichelnAnzComboBox.Enabled = enable;
	this.streichelnNoteComboBox.Enabled = enable;
	this.streichelnDatumDateTimePicker.Enabled = enable;
}
Da hier Redundanz vorliegt, würde ich gerne folgendes machen:
Code:
private void checkBox_CheckedChanged(String name)
{
	bool enable;

	if ("hier der übergebene String"CheckBox.Checked)
		enable = true;
	else
		enable = false;

	this."hier der übergebene String"AnzComboBox.Enabled = enable;
	this."hier der übergebene String"NoteComboBox.Enabled = enable;
	this."hier der übergebene String"DatumDateTimePicker.Enabled = enable;
}

private void streichelnCheckBox_CheckedChanged(object sender, EventArgs e) {
	this.checkBox_CheckedChangeged("streicheln");
}

private void kuessenCheckBox_CheckedChanged(object sender, EventArgs e) {
	this.checkBox_CheckedChangeged("kuessen");
}
Doch wie ist es möglich, mit Hilfe des übergebene Strings (name) die einzelnen Elemente anzusprechen?

Vielen Dank im Voraus.

Gruß
Sven.
 

Norbert Eder

Erfahrenes Mitglied
Dann nimmst du den gleichen Code den ich eh schon gepostet hab und machst eine kleine Änderung, nachdem es sich um unterschiedliche Controls handelt:
Code:
foreach (Control c in this.Controls) 
{
  if (c.Name == name)
    c.Enabled = enable;
}
 

Christian Kusmanow

Erfahrenes Mitglied
[OT Fun Mode ON]
LOL Du sorry,
Code:
kuessenAnzComboBox;
streichelnAnzComboBox;
massieren_anzComboBox;
...aber was schreibst Du da eigentlich? Ein interaktives *ups* Progamm? :D :p
Wenn ja, braucht Du noch Tester? (für's Programm versteht sich :D)
[/OT Fun Mode OFF]
 

Neue Beiträge