/// <summary> /// 初始化控件事件 /// </summary> private void InitCtrlEvents() { ctrl.MouseEnter += (sender, e) => state = CcCtrlState.Hovered; ctrl.MouseLeave += (sender, e) => state = CcCtrlState.Normal; ctrl.MouseDown += (sender, e) => { //鼠标左键且点击次数为1 if (e.Button == MouseButtons.Left && e.Clicks == 1) { state = CcCtrlState.Pressed; } }; ctrl.MouseUp += (sender, e) => { if (e.Button == MouseButtons.Left && e.Clicks == 1) { if (ctrl.ClientRectangle.Contains(e.Location)) { //控件区域包含鼠标的位置 state = CcCtrlState.Hovered; } else { state = CcCtrlState.Normal; } } }; ctrl.GotFocus += (sender, e) => state = CcCtrlState.Focused; ctrl.LostFocus += (sender, e) => state = CcCtrlState.Normal; }
/// <summary> /// 获取特定状态的外观属性 /// </summary> /// <param name="state"></param> /// <returns></returns> private CcAppearance GetAppearance(CcCtrlState state) { CcAppearance appearance = null; switch (state) { case CcCtrlState.Disabled: appearance = ctrl.Appearances.DisabledAppearance; break; case CcCtrlState.Hovered: appearance = ctrl.Appearances.HoveredAppearance; break; case CcCtrlState.Pressed: appearance = ctrl.Appearances.PressedAppearance; break; case CcCtrlState.Focused: appearance = ctrl.Appearances.FocusedAppearance; break; case CcCtrlState.Normal: default: break; } return((appearance?.IsEmpty ?? true) ? ctrl.Appearances.Appearance : appearance); }