RaUI/Source/ryControls/Rili/LunarDay.cs
2020-11-28 15:03:57 +08:00

153 lines
5.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// 日控件
/// </summary>
internal partial class LunarDay : UserControl
{
/// <summary>
/// 日控件
/// </summary>
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;
/// <summary>
/// 当前日期
/// </summary>
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);
/// <summary>
/// 在发生页码变化前激发
/// </summary>
[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);
}
/// <summary>
/// 设置休息状态,1为休息,-1为上班其它为不显示
/// </summary>
/// <param name="i"></param>
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;
/// <summary>
/// 日期
/// </summary>
public int Day
{
get { return _day; }
set { _day = value;LblDay.Text = _day.ToString(); }
}
/// <summary>
/// 农历
/// </summary>
public string Lunar_Day
{
get { return LblLunarDay.Text; }
set { LblLunarDay.Text = value; toolTip1.SetToolTip(LblLunarDay, value); }
}
/// <summary>
/// 阳历日期字体颜色
/// </summary>
public Color Day_ForeColor
{
get { return LblDay.ForeColor; }
set { LblDay.ForeColor = value; }
}
/// <summary>
/// 阳历日期字体
/// </summary>
public Font Day_Font
{
get { return LblDay.Font; }
set { LblDay.Font = value; }
}
/// <summary>
/// 农历日期字体
/// </summary>
public Font Lunar_Day_Font
{
get { return LblLunarDay.Font; }
set { LblLunarDay.Font = value; }
}
/// <summary>
/// 农历部分字体颜色
/// </summary>
public Color Lunar_Day_ForeColor
{
get { return LblLunarDay.ForeColor; }
set { LblLunarDay.ForeColor = value; }
}
private bool _Selected = false;
/// <summary>
/// 是否选中
/// </summary>
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);
}
}
}
}
}