Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
Recently, one of my clients was borred about a customisation of a .NET 2.0 RichTextBox control.
He was using a ToolStrip to change the style of text selections :
The problem he met was about the toggling between the different styles.If you take a look at the FontStyle enumeration, you'll see that it "has a FlagsAttribute attribute that allows a bitwise combination of its member values" (cfr MSDN).Knowing that, the values correlated to the different FontStyle are :
The fact that enumeration constants are defined in power of 2 is of required by the FlagsAttribute to avoid overlaps of different combinations.
Imagine that the selected text in the RichTextBox is bold and underlined. You'll get a FontStyle constant of 5 (binary representation : 0101).
If you ask to remove the bold style, you'll then just have to apply a XOR operator :
0101 XOR 0001 = 0100
If you then want to toggle again :
0100 XOR 0001 = 0101
The code in C# will thus be something like (rtb is the reference to the RichTextBox):
Font f = new Font(this.rtb.Font.FontFamily, this.rtb.Font.Size, this.rtb.SelectionFont.Style ^ FontStyle.Bold);this.rtb.SelectionFont = f;
Easy, isn't it? :)
This will of course apply to all the enumeration types that have the FlagsAttribute.
Remember Me
a@href@title, strike