Good morning

I have an event called "OptionChanged" that is triggered when one of many CheckBox's is changed.

string cb = ((CheckBox)sender).Name.Remove(((CheckBox)sender).Name.Count() - 1);

gets the name of the changed CheckBox, removes the last letter then copies it to a string.

Now, i need to find the relevant bool (named exactly like the string) that has already been declared to change its value.

Is this possible?


4 Years
Discussion Span
Last Post by //Gonz

It's possible... you'd have to use Reflection (essentially it makes the program source code aware). I would highly recommend you do not do this, as it can be very prone to bugs/errors and is generally reserved for debugging (or possibley very speciallized circumstances).

What are you trying to achieve?


Thanks for the reply mmaillet.
I am trying to lump all the events of different checkboxes into one function. I have specifically named the checkboxes and bools to enable me to do this; thus the removing of the last character.

I am just looking for a way to shorten the code from say 50 lines to around 3.

thanks again


You could accomplish your goal via Reflection something like this:

private bool fred;
public void SetBoolean(string boolToSet, bool Value)
    System.Reflection.FieldInfo fi = this.GetType.GetField(boolToSet, Reflection.BindingFlags.Instance | Reflection.BindingFlags.NonPublic | Reflection.BindingFlags.Public);
    fi.SetValue(this, Value);
public void test()
    SetBoolean("fred", true);

However, I would recommend that you consider using a Dictionary(Of String, Boolean) instead. It will give you the access by name feature that you want.


thats an awesome bit of code there TnTinMN! i got round the problem in the end but this will be very useful for me in future projects.

Thank you

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.