• DevExpress之时间控件


    dateEdit和timeEdit

    基本属性

    DisplayFormat.FormatString-------失去焦点是控件显示的格式,timeEdit用不上

    EditMask--------------------------获取焦点时也就是在编辑状态时控件的显示格式

    ShowToday-----------------------控件编辑状态时是否在编辑框中显示当天日期,dateEdit的控件

    Text------------------------------获取控件的值

    SelectedText---------------------获取选中的值,一般是用在timeEdit,timeEdit编辑状态时可以选中 小时/分钟/秒

    显示到天

    dateEdit1.Properties.DisplayFormat.FormatString = "yyyy-MM-dd";
    dateEdit1.Properties.EditMask = "yyyy-MM-dd";

    显示到月

    dateEdit1.Properties.DisplayFormat.FormatString = "yyyy-MM";
    dateEdit1.Properties.EditMask = "yyyy-MM";

    显示到年

    dateEdit1.Properties.DisplayFormat.FormatString = "yyyy";
    dateEdit1.Properties.EditMask = "yyyy";

    字符串转DateTime

    DateTime.Parse("2016-3-16 12:12:12")

    字符串根据指定格式转换为DateTime

    IFormatProvider ifp = new CultureInfo("zh-CN", true);
    DateTime.ParseExact("20160316121212", "yyyyMMddHHmmss", ifp);

    ifp是一个区域特定格式字符串信息

    注意:大写MM是指月,小写mm是指分钟,小时二十四制要用大写HH,十二小时制用小写hh

    DateTime转换指定格式字符串

    DateTime datetime = DateTime.Now;
    string timeString = datetime.ToString("yyyyMMddHHmmss");

    旧版本在显示到月或者是年的时候有点麻烦,需要自己重载dateEdit控件

    using System;
    
    using System.Collections;
    
    using System.Collections.Generic;
    
    using System.Data;
    
    using System.Diagnostics;
    
    using DevExpress.XtraEditors;
    
    using DevExpress.XtraEditors.Calendar;
    
    using DevExpress.XtraEditors.Popup;
    
    using DevExpress.XtraEditors.Controls;
    
    using DevExpress.XtraEditors.Repository;
    
     
    
    namespace LZJA.Common
    
    {
    
        public class DateEditEx : DateEdit
    
        {
    
            public DateEditEx()
    
            {
    
                Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.True;
    
                Properties.DisplayFormat.FormatString = "yyyy-MM";
    
                Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
    
                Properties.Mask.EditMask = "yyyy-MM";
    
                Properties.ShowToday = false;
    
            }
    
            protected override PopupBaseForm CreatePopupForm()
    
            {
    
                if (Properties.VistaDisplayMode == DevExpress.Utils.DefaultBoolean.True)
    
                    return new CustomVistaPopupDateEditForm(this);
    
                return new PopupDateEditForm(this);
    
            }
    
            private DateResultModeEnum _dateMode = DateResultModeEnum.FirstDayOfMonth;
    
            public DateResultModeEnum DateMode
    
            {
    
                get { return _dateMode; }
    
                set { _dateMode = value; }
    
            }
    
     
    
            public enum DateResultModeEnum : int
    
            {
    
                //虽然是年月控件,但日期Datetime肯定是2012-01-01这种格式
    
                //所以,这个枚举定义了年月控件返回本月的第一天,还是本月的最后一天作为DateEditEx的值
    
                FirstDayOfMonth = 1,
    
                LastDayOfMonth = 2
    
            } 
    
     
    
        }
    
        public class CustomVistaPopupDateEditForm : VistaPopupDateEditForm
    
        {
    
            public CustomVistaPopupDateEditForm(DateEdit ownerEdit) : base(ownerEdit) { }
    
            protected override DateEditCalendar CreateCalendar()
    
            {
    
                return new CustomVistaDateEditCalendar(OwnerEdit.Properties, OwnerEdit.EditValue);
    
            }
    
        }
    
        public class CustomVistaDateEditCalendar : VistaDateEditCalendar
    
        {
    
            public CustomVistaDateEditCalendar(RepositoryItemDateEdit item, object editDate) : base(item, editDate) { }
    
     
    
            protected override void Init()
    
            {
    
                base.Init();
    
                this.View = DateEditCalendarViewType.YearInfo;
    
            }
    
            public DateEditEx.DateResultModeEnum DateMode
    
            {
    
                get { return ((DateEditEx)this.Properties.OwnerEdit).DateMode; }
    
            }
    
            protected override void OnItemClick(DevExpress.XtraEditors.Calendar.CalendarHitInfo hitInfo)
    
            {
    
                DayNumberCellInfo cell = hitInfo.HitObject as DayNumberCellInfo;
    
                if (View == DateEditCalendarViewType.YearInfo)
    
                {
    
                    DateTime dt = new DateTime(DateTime.Year, cell.Date.Month, 1, 0, 0, 0);
    
                    if (DateMode == DateEditEx.DateResultModeEnum.FirstDayOfMonth)
    
                    {
    
                        
    
                        OnDateTimeCommit(dt, false);
    
                    }
    
                    else
    
                    {
    
                        DateTime tempDate = dt.AddMonths(1).AddDays(-1);
    
                        tempDate = new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, 23, 59, 59);
    
                        OnDateTimeCommit(tempDate, false);
    
                    }
    
                }
    
                else
    
                    base.OnItemClick(hitInfo);
    
            }
    
        }
    
    }
    

    这是网上的一个例子,原文链接https://www.devexpress.com/Support/Center/Question/Details/CQ60337/control-for-selecting-month,下面这个是我稍微改了一下,只显示年面板的代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using DevExpress.XtraEditors;
    using DevExpress.XtraEditors.Calendar;
    using DevExpress.XtraEditors.Popup;
    using DevExpress.XtraEditors.Controls;
    using DevExpress.XtraEditors.Repository;
    namespace  LZJA.Common
    {
        public class DateEditEx : DateEdit
        {
    
            public DateEditEx()
            {
    
                Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.True;
    
                Properties.DisplayFormat.FormatString = "yyyy";
    
                Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
    
                Properties.Mask.EditMask = "yyyy";
    
                Properties.ShowToday = false;
    
            }
    
            protected override PopupBaseForm CreatePopupForm()
            {
    
                if (Properties.VistaDisplayMode == DevExpress.Utils.DefaultBoolean.True)
    
                    return new CustomVistaPopupDateEditForm(this);
    
                return new PopupDateEditForm(this);
    
            }
    
            private DateResultModeEnum _dateMode = DateResultModeEnum.FirstDayOfMonth;
    
            public DateResultModeEnum DateMode
            {
    
                get { return _dateMode; }
    
                set { _dateMode = value; }
    
            }
    
            public enum DateResultModeEnum : int
            {
    
                //虽然是年月控件,但日期Datetime肯定是2012-01-01这种格式
    
                //所以,这个枚举定义了年月控件返回本月的第一天,还是本月的最后一天作为DateEditEx的值
    
                FirstDayOfMonth = 1,
    
                LastDayOfMonth = 2
    
            }
    
        }
    
        public class CustomVistaPopupDateEditForm : VistaPopupDateEditForm
        {
    
            public CustomVistaPopupDateEditForm(DateEdit ownerEdit) : base(ownerEdit) { }
    
            protected override DateEditCalendar CreateCalendar()
            {
    
                return new CustomVistaDateEditCalendar(OwnerEdit.Properties, OwnerEdit.EditValue);
    
            }
    
        }
    
        public class CustomVistaDateEditCalendar : VistaDateEditCalendar
        {
    
            public CustomVistaDateEditCalendar(RepositoryItemDateEdit item, object editDate) : base(item, editDate) { }
    
            protected override void Init()
            {
    
                base.Init();
    
                this.View = DateEditCalendarViewType.YearsInfo;
    
            }
    
            public DateEditEx.DateResultModeEnum DateMode
            {
    
                get
                {
                    return ((DateEditEx)this.Properties.OwnerEdit).DateMode;
                }
    
            }
    
            protected override void OnItemClick(DevExpress.XtraEditors.Calendar.CalendarHitInfo hitInfo)
            {
    
                DayNumberCellInfo cell = hitInfo.HitObject as DayNumberCellInfo;
    
                //DateTime dt = new DateTime(DateTime.Year, 1, 1, 0, 0, 0);
                OnDateTimeCommit(cell.Date, false);
                //base.OnItemClick(hitInfo);
    
            }
    
        }
    }
    

      

     

  • 相关阅读:
    HDU3555:Bomb
    入门OJ:售货员的难题
    Zju1100 Mondriaan
    与图论的邂逅08:树上倍增
    入门OJ:八中生成树2
    Poj2286 The Rotation Game
    P1379 八数码难题
    [SCOI2005]骑士精神
    与图论的邂逅07:K短路
    [Usaco2007 Feb]Cow Party
  • 原文地址:https://www.cnblogs.com/fuhai/p/5282409.html
Copyright © 2020-2023  润新知