• 位标志枚举


          枚举为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。可以使用枚举类型定义位标志,从而使该枚举类型的实例可以存储枚举数列表中定义的值的任意组合。

           示例:创建一个WPF程序

    MainWindow.xaml文件

    <Window x:Class="UseEnum_wpf.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <DatePicker Height="26" HorizontalAlignment="Left" Margin="151,52,0,0" Name="datePicker1" VerticalAlignment="Top" Width="192" SelectedDateChanged="datePicker1_SelectedDateChanged" />
            <TextBox Height="26" HorizontalAlignment="Left" Margin="151,111,0,0" Name="textBox1" VerticalAlignment="Top" Width="192" />
        </Grid>
    </Window>

    MainWindow.xaml.cs文件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace UseEnum_wpf
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            [Flags]
            enum WeekDayFlags    //一周时间枚举
            {
                None = 0x0,  //值为零,表示“未设置任何标志”的命名常量。
                //如果零值不表示“未设置任何标志”,则请不能为标志指定零值。
                Sunday = 0x1, 
                Monday = 0x2,
                Tuesday = 0x4,
                Wednesday = 0x8,
                Thursday = 0x10,
                //0x10是十六进制数,代表十进制数16
    Friday
    = 0x20, //0x20是十六进制数,代表十进制数32
    Saturday
    = 0x40 //0x40是十六进制数,代表十进制数64
    }
    //可以使用枚举类型定义位标志,从而使该枚举类型的实例可以存储枚举数列表中定义的值的任意组合。 /*使用按位 | (OR)或运算符,在某个枚举上设置标志*/ // 移除一个标志使用 ^ (XOR)异或运算符 //休息日 WeekDayFlags RestDay = WeekDayFlags.Saturday | WeekDayFlags.Sunday ; //工作日 WeekDayFlags WorkDay = WeekDayFlags.Monday| WeekDayFlags.Tuesday | WeekDayFlags.Wednesday | WeekDayFlags.Thursday | WeekDayFlags.Friday; public MainWindow() { InitializeComponent(); } //日期选择控件 private void datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { DateTime SelectedDate = (DateTime)this.datePicker1.SelectedDate; int SD = (int)SelectedDate.DayOfWeek; //根据一个整数值返回一个WeekDayFlags类型的值 WeekDayFlags SDwFlags = SelectedDateWeekDay(SD+1); //使用按位 & (AND)与运算,确定是否设置了特定标志 if ((RestDay & SDwFlags) == SDwFlags) { this.textBox1 .Text = "休息日"; } if ((WorkDay & SDwFlags) == SDwFlags) { this.textBox1.Text = "工作日"; } } //根据一个给定的值,返回一个WeekDay类型的值。 private WeekDayFlags SelectedDateWeekDay(int SD) { // WeekDayFlags wdf ; if (SD <= 2) { // wdf = sd return (WeekDayFlags)SD; } else { int SDw = 2; for (int i = SD -2; i > 0; i--) { SDw = SDw * 2; } return (WeekDayFlags)SDw; } } } }

    运行效果:

  • 相关阅读:
    Asp.NET 的Session实现原理
    jquery.treeview.js树控件的应用
    jQuery Timers插件
    索引 设计准则
    隐藏iframe实现无刷新的效果
    异步上传文件解决方法
    jQuery .unique()的使用
    HtmlControl与WebControl的区别与用途
    ASP.NET“服务器应用程序不可用”问题完全解决方案
    FastReport4.6程序员手册_翻译
  • 原文地址:https://www.cnblogs.com/shuiguang/p/2608475.html
Copyright © 2020-2023  润新知