using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using ryControls; using System.Drawing.Drawing2D; namespace ryControls { /// /// 日控件 /// internal partial class LunarDay : UserControl { /// /// 日控件 /// public LunarDay() { InitializeComponent(); LblDay.Left = border_width; LblDay.Width = Width - border_width - border_width; LblLunarDay.Left = border_width; LblLunarDay.Width = Width - border_width - border_width; LblDay.Click += LblDay_Click; LblLunarDay.Click += LblDay_Click; LblState.Location = new Point(border_width, border_width); LblState.Visible = false; } int border_width = 4; /// /// 当前日期 /// public DateTime Date { get; set; } = DateTime.Now; private void LblDay_Click(object sender, EventArgs e) { base.OnClick(e); ; } public delegate void ProcessCmdKeyHandler(object sender, ref Message msg, Keys keyData); /// /// 在发生页码变化前激发 /// [Description("在发生页码变化前激发")] public event ProcessCmdKeyHandler OnProcessCmdKey; protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { OnProcessCmdKey?.Invoke(this,ref msg,keyData); //return false;//如果要调用KeyDown,这里一定要返回false才行,否则只响应重写方法里的按键. //这里调用一下父类方向,相当于调用普通的KeyDown事件.//所以按空格会弹出两个对话框 return base.ProcessCmdKey(ref msg, keyData); } /// /// 设置休息状态,1为休息,-1为上班,其它为不显示 /// /// public void SetRestState(int i) { if (i == -1) { LblState.Text = "班"; LblState.BackColor = Color.FromArgb(234, 131, 117); LblState.Visible = true; } else if (i == 1) { LblState.Text = "休"; LblState.BackColor = Color.FromArgb(0, 192, 0); LblState.Visible = true; } else { LblState.Visible = false; } } private int _day = 1; /// /// 日期 /// public int Day { get { return _day; } set { _day = value;LblDay.Text = _day.ToString(); } } /// /// 农历 /// public string Lunar_Day { get { return LblLunarDay.Text; } set { LblLunarDay.Text = value; toolTip1.SetToolTip(LblLunarDay, value); } } /// /// 阳历日期字体颜色 /// public Color Day_ForeColor { get { return LblDay.ForeColor; } set { LblDay.ForeColor = value; } } /// /// 阳历日期字体 /// public Font Day_Font { get { return LblDay.Font; } set { LblDay.Font = value; } } /// /// 农历日期字体 /// public Font Lunar_Day_Font { get { return LblLunarDay.Font; } set { LblLunarDay.Font = value; } } /// /// 农历部分字体颜色 /// public Color Lunar_Day_ForeColor { get { return LblLunarDay.ForeColor; } set { LblLunarDay.ForeColor = value; } } private bool _Selected = false; /// /// 是否选中 /// public bool Selected { get { return _Selected; } set { if (_Selected != value) { _Selected = value; Refresh(); } } } private void LunarDay_Paint(object sender, PaintEventArgs e) { if(Selected) e.Graphics.DrawRectangle(new Pen(Color.DeepSkyBlue,border_width), new Rectangle(0, 0, this.Width, this.Height)); } private void DrawBorder(Graphics g, Rectangle rect, RoundStyle roundStyle, int radius) { rect.Width -= 1; rect.Height -= 1; using (GraphicsPath path =ryControls.Drawing.CreatePath(rect, radius, roundStyle, false)) { SolidBrush myBrush = new SolidBrush(Color.White); using (Pen pen = new Pen(Color.Black)) { g.FillPath(myBrush, path); g.DrawPath(pen, path); } } } } }