305 lines
9.7 KiB
C#
305 lines
9.7 KiB
C#
|
using System;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.Windows.Forms;
|
|||
|
|
|||
|
namespace HL_FristAidPlatform_Public
|
|||
|
{
|
|||
|
public partial class TimeControl : UserControl
|
|||
|
{
|
|||
|
#region 用户自定义属性
|
|||
|
|
|||
|
#region 私有属性
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 日期格式
|
|||
|
/// 私有属性,根据FormatString_Date产生值
|
|||
|
/// </summary>
|
|||
|
private string FormatString = "yyyy-MM-dd HH:mm";
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 时间
|
|||
|
/// 私有属性,根据FormatString_Time产生值
|
|||
|
/// </summary>
|
|||
|
private string EditMask = "HH:mm";
|
|||
|
|
|||
|
#endregion 私有属性
|
|||
|
|
|||
|
#region 控件公有属性 调用端使用
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 时间文字值
|
|||
|
/// </summary>
|
|||
|
public string TimeValue
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if (string.IsNullOrEmpty(dateEdit.EditValue + ""))
|
|||
|
{
|
|||
|
return PublicClass.ToString(dateEdit.EditValue, "");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return Convert.ToDateTime(PublicClass.ToString(dateEdit.EditValue, "")).ToString(FormatString);
|
|||
|
}
|
|||
|
}
|
|||
|
set
|
|||
|
{
|
|||
|
if (string.IsNullOrWhiteSpace(value))
|
|||
|
{
|
|||
|
dateEdit.EditValue = "";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
string time = Convert.ToDateTime(value).ToString(FormatString);
|
|||
|
dateEdit.EditValue = time;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 控件输入框中日期+时间 格式
|
|||
|
/// </summary>
|
|||
|
[DefaultValue(typeof(DateFormat), "yyyyMMddHHmm")]
|
|||
|
private DateFormat formatString_Date;
|
|||
|
|
|||
|
public DateFormat FormatString_Date
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return formatString_Date;
|
|||
|
}
|
|||
|
set
|
|||
|
{
|
|||
|
switch (value)
|
|||
|
{
|
|||
|
case DateFormat.yyyyMM:
|
|||
|
FormatString = "yyyy年MM月";
|
|||
|
break;
|
|||
|
|
|||
|
case DateFormat.yyyyMMdd:
|
|||
|
FormatString = "yyyy-MM-dd";
|
|||
|
break;
|
|||
|
|
|||
|
case DateFormat.yyyyMMddHHmm:
|
|||
|
FormatString = "yyyy-MM-dd HH:mm";
|
|||
|
break;
|
|||
|
|
|||
|
case DateFormat.yyyyMMddHHmmss:
|
|||
|
FormatString = "yyyy-MM-dd HH:mm:ss";
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
FormatString = "yyyy-MM-dd HH:mm";
|
|||
|
break;
|
|||
|
}
|
|||
|
formatString_Date = value;
|
|||
|
|
|||
|
ChangeFormatString();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 控件点开后时钟下输入框中的 格式
|
|||
|
/// </summary>
|
|||
|
[DefaultValue(typeof(TimeFormat), "HHmm")]
|
|||
|
private TimeFormat formatString_Time;
|
|||
|
|
|||
|
public TimeFormat FormatString_Time
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return formatString_Time;
|
|||
|
}
|
|||
|
set
|
|||
|
{
|
|||
|
switch (value)
|
|||
|
{
|
|||
|
case TimeFormat.HHmm:
|
|||
|
EditMask = "HH:mm";
|
|||
|
break;
|
|||
|
|
|||
|
case TimeFormat.HHmmss:
|
|||
|
EditMask = "HH:mm:ss";
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
EditMask = "HH:mm";
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
formatString_Time = value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 是否显示时钟
|
|||
|
/// </summary>
|
|||
|
public DevExpress.Utils.DefaultBoolean defaultBoolean { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 日期格式化枚举
|
|||
|
/// </summary>
|
|||
|
public enum DateFormat
|
|||
|
{
|
|||
|
yyyyMM = 1,
|
|||
|
yyyyMMdd = 2,
|
|||
|
yyyyMMddHHmm = 3,
|
|||
|
yyyyMMddHHmmss = 4,
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 时间格式化枚举
|
|||
|
/// </summary>
|
|||
|
public enum TimeFormat
|
|||
|
{
|
|||
|
HHmm = 0,
|
|||
|
HHmmss = 1,
|
|||
|
}
|
|||
|
|
|||
|
#endregion 控件公有属性 调用端使用
|
|||
|
|
|||
|
#endregion 用户自定义属性
|
|||
|
|
|||
|
#region 用户自定义事件
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 定义委托
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
public delegate void TimeChanged(object sender, EventArgs e);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 定义事件
|
|||
|
/// </summary>
|
|||
|
public event TimeChanged TimeValueChanged;
|
|||
|
|
|||
|
#endregion 用户自定义事件
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 用户自定义控件-时间控件
|
|||
|
/// </summary>
|
|||
|
public TimeControl()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 窗体加载
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void TimeControl_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
ChangeFormatString();
|
|||
|
dateEdit.EditValue = TimeValue;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 显示格式改变后
|
|||
|
/// </summary>
|
|||
|
private void ChangeFormatString()
|
|||
|
{
|
|||
|
#region 时间显示格式
|
|||
|
|
|||
|
//设置Mask.EditMask和DisplayFormat,EditFormat属性。设置为一致:TimeToString; //依照想要的显示格式设置此字符串。
|
|||
|
this.dateEdit.Properties.DisplayFormat.FormatString = FormatString;
|
|||
|
this.dateEdit.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
|||
|
this.dateEdit.Properties.EditFormat.FormatString = FormatString;
|
|||
|
this.dateEdit.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
|||
|
this.dateEdit.Properties.Mask.EditMask = FormatString;
|
|||
|
|
|||
|
//假设要显示时间须要设置VistaDisplayMode=true, VistaEditTime=true。意思为显示时间。在日期控件中会出现时钟图标,并能够编辑时间。
|
|||
|
this.dateEdit.Properties.VistaDisplayMode = defaultBoolean;
|
|||
|
this.dateEdit.Properties.VistaEditTime = defaultBoolean;
|
|||
|
|
|||
|
//设置时间部分的格式,时间部分指的是打开日期控件后,在时钟图标下的显示的日期格式。
|
|||
|
this.dateEdit.Properties.VistaTimeProperties.DisplayFormat.FormatString = EditMask;
|
|||
|
this.dateEdit.Properties.VistaTimeProperties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
|||
|
this.dateEdit.Properties.VistaTimeProperties.EditFormat.FormatString = EditMask;
|
|||
|
this.dateEdit.Properties.VistaTimeProperties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
|||
|
this.dateEdit.Properties.VistaTimeProperties.Mask.EditMask = EditMask;
|
|||
|
|
|||
|
//年月时仅显示月份
|
|||
|
if (FormatString == "yyyy年MM月")
|
|||
|
{
|
|||
|
this.dateEdit.Properties.VistaCalendarInitialViewStyle = DevExpress.XtraEditors.VistaCalendarInitialViewStyle.YearView;
|
|||
|
this.dateEdit.Properties.VistaCalendarViewStyle = DevExpress.XtraEditors.VistaCalendarViewStyle.YearView;
|
|||
|
}
|
|||
|
|
|||
|
if (FormatString == "yyyy")
|
|||
|
{
|
|||
|
this.dateEdit.Properties.VistaCalendarInitialViewStyle = DevExpress.XtraEditors.VistaCalendarInitialViewStyle.YearView;
|
|||
|
this.dateEdit.Properties.VistaCalendarViewStyle = DevExpress.XtraEditors.VistaCalendarViewStyle.YearView;
|
|||
|
}
|
|||
|
#endregion 时间显示格式
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 控件关闭事件
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void DateEdit_Closed(object sender, DevExpress.XtraEditors.Controls.ClosedEventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (PublicClass.ToString(dateEdit.EditValue, "") == "")
|
|||
|
{
|
|||
|
dateEdit.EditValue = DateTime.Now.ToString(FormatString);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
PublicClass.WriteErrorLog("时间用户控件", "给指定时间控件为空时赋值当前时间:\r\n" + ex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 控件点击事件
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void DateEdit_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (PublicClass.ToString(dateEdit.EditValue, "") == "")
|
|||
|
{
|
|||
|
dateEdit.EditValue = DateTime.Now.ToString(FormatString);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
dateEdit_EditValueChanged(sender, e);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
PublicClass.WriteErrorLog("时间用户控件", "给指定时间控件为空时赋值当前时间:\r\n" + ex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 时间控件更改事件
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void dateEdit_EditValueChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
//if (TimeValueChanged != null)
|
|||
|
// TimeValueChanged(sender, new EventArgs());//把控件自身作为参数传递
|
|||
|
|
|||
|
TimeValueChanged?.Invoke(sender, new EventArgs());//把控件自身作为参数传递
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 更改控件颜色
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void TimeControl_ForeColorChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
dateEdit.ForeColor = ForeColor;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|