Revision: 2695
Updated Code
at September 9, 2007 19:19 by rengber
Updated Code
[Flags]
private enum DeliveryOptions
{
//Make sure you start with zero and increment by powers of 2.
//If you don't assign explicit values VS increments by 1.
//Very bad. For example (One | Two = Three)
None = 0, //(0000)
Mail = 1, //(0001)
Email = 2, //(0010)
Fax = 4, //(0100)
}
private DeliveryOptions deliveryFlags;
private void button2_Click(object sender, EventArgs e)
{
//Put some checkboxes on the form.
//A [Flag] enum can hold multiple values at once.
//Checking or unchecking boxes adds or removes values.
MessageBox.Show(deliveryFlags.ToString());
MessageBox.Show(Convert.ToInt32(deliveryFlags).ToString());
}
private bool CheckFlag(DeliveryOptions targetVal, DeliveryOptions checkVal)
{
return ((targetVal & checkVal) == checkVal);
}
private bool HasBeenEmailed(DeliveryOptions targetVal)
{
return CheckFlag(targetVal, DeliveryOptions.Email);
}
private void btnValueCheck_Click(object sender, EventArgs e)
{
bool emailDelivered = HasBeenEmailed(deliveryFlags) ;
MessageBox.Show(emailDelivered.ToString());
}
private void chkOne_CheckedChanged(object sender, EventArgs e)
{
if (chkMail.Checked)
{
deliveryFlags |= DeliveryOptions.Mail;
}
else
{
deliveryFlags &= ~DeliveryOptions.Mail;
}
}
private void chkTwo_CheckedChanged(object sender, EventArgs e)
{
if (chkEmail.Checked)
{
deliveryFlags |= DeliveryOptions.Email;
}
else
{
deliveryFlags &= ~DeliveryOptions.Email;
}
}
private void chkThree_CheckedChanged(object sender, EventArgs e)
{
if (chkFax.Checked)
{
deliveryFlags |= DeliveryOptions.Fax;
}
else
{
deliveryFlags &= ~DeliveryOptions.Fax;
}
}
Revision: 2694
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 27, 2007 20:24 by rengber
Initial Code
[Flags]
private enum myAttributes
{
//Make sure you start with zero and increment by powers of 2.
//If you don't assign explicit values VS increments by 1.
//Very bad. For example (One | Two = Three)
None = 0,
One = 1,
Two = 2,
Three = 4,
Four = 8
}
//Put some checkboxes on the form.
private void button1_Click_1(object sender, System.EventArgs e)
{
myAttributes displayValue = myAttributes.None;
if(chkOne.Checked)
{
displayValue |= myAttributes.One;
}
if(chkTwo.Checked)
{
displayValue |= myAttributes.Two;
}
if(chkThree.Checked)
{
displayValue |= myAttributes.Three;
}
if(chkFour.Checked)
{
displayValue |= myAttributes.Four;
}
MessageBox.Show(displayValue.ToString());
}
Initial URL
Initial Description
Note the use of the Bitwise Complement Operator ( ~ ) to AND the negative of the bit you want to set.
Initial Title
Using a Flag Enumeration with Bitwise Operations
Initial Tags
Initial Language
C#