ab56a9bcf7
SVN-Revision: r240
256 lines
8.4 KiB
C#
256 lines
8.4 KiB
C#
/******************************
|
|
* 说明:自定义菜单
|
|
* 创建人:龚宇超
|
|
* 创建日期:2017-08-16
|
|
* 修改人:
|
|
* 修改日期:
|
|
* 修改备注:
|
|
* 版本:1.0.0.0
|
|
******************************/
|
|
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 Lskj.Main.Properties;
|
|
using Lskj.Business.Impl;
|
|
using Lskj.Control;
|
|
|
|
namespace Lskj.Main.Control
|
|
{
|
|
/// <summary>
|
|
/// 自定义菜单
|
|
/// </summary>
|
|
public partial class MenuBar : UserControl
|
|
{
|
|
/// <summary>
|
|
/// 默认选中菜单
|
|
/// </summary>
|
|
private static Button defaultButton;
|
|
private ButtonHoverEventHandler hoverEvent;
|
|
public delegate void ButtonHoverEventHandler(Button before, Button after);
|
|
public bool isSelect = false;
|
|
|
|
//是否是配置了我的桌面和特殊展示(左侧选中目录没有改变时,依旧执行单击回调)
|
|
public bool ClickExecute = false;
|
|
|
|
|
|
public MenuBar()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:获取菜单按钮</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-16 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <returns>Button.</returns>
|
|
public Button GetButton()
|
|
{
|
|
return this.btnDesktop;
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置默认选中的Button</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-16 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="item">The item.</param>
|
|
public void SetDefaultSelectMenu(MenuBar item)
|
|
{
|
|
defaultButton = item.btnDesktop;
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置菜单状态状态</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-16 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="state">The state.</param>
|
|
public void SetButtonState(MenuButtonState state)
|
|
{
|
|
switch (state)
|
|
{
|
|
case MenuButtonState.defaultState:
|
|
this.btnDesktop.BackgroundImage = Resources.left_default;
|
|
break;
|
|
case MenuButtonState.selectState:
|
|
this.btnDesktop.BackgroundImage = Resources.left_select;
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:注册鼠标划过事件</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-16 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="hoverEvent">The hover event.</param>
|
|
/// <param name="eventType">Type of the event.</param>
|
|
public void SetHoverEvent(ButtonHoverEventHandler hoverEvent, MenuEventType eventType)
|
|
{
|
|
try
|
|
{
|
|
this.hoverEvent = hoverEvent;
|
|
switch (eventType)
|
|
{
|
|
case MenuEventType.MouseClickEvent:
|
|
this.btnDesktop.MouseMove += new MouseEventHandler(btnDesktop_MouseMove);
|
|
this.btnDesktop.MouseClick += new MouseEventHandler(this.btnDesktio_MouseEvent);
|
|
break;
|
|
case MenuEventType.MouseHoverEvent:
|
|
default:
|
|
this.btnDesktop.MouseMove += new MouseEventHandler(this.btnDesktio_MouseEvent);
|
|
break;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:鼠标划过菜单时</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-16 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The source of the event.</param>
|
|
/// <param name="e">The <see cref="MouseEventArgs"/> instance containing the event data.</param>
|
|
private void btnDesktop_MouseMove(object sender, MouseEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
this.Cursor = Cursors.Hand;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:切换菜单</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-16 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The source of the event.</param>
|
|
/// <param name="e">The <see cref="MouseEventArgs"/> instance containing the event data.</param>
|
|
private void btnDesktio_MouseEvent(object sender, MouseEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
Button button = sender as Button;
|
|
if (button != null)
|
|
{
|
|
if (defaultButton != null)
|
|
defaultButton.BackgroundImage = Resources.left_default;
|
|
button.BackgroundImage = Resources.left_select;
|
|
}
|
|
|
|
|
|
if (defaultButton != button|| this.ClickExecute)
|
|
{
|
|
if (hoverEvent != null)
|
|
{
|
|
this.hoverEvent(defaultButton, button);
|
|
}
|
|
defaultButton = button;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 解除事件
|
|
/// </summary>
|
|
public void ReleaseEvent()
|
|
{
|
|
this.btnDesktop.MouseMove -= new MouseEventHandler(btnDesktop_MouseMove);
|
|
this.btnDesktop.MouseClick -= new MouseEventHandler(this.btnDesktio_MouseEvent);
|
|
this.btnDesktop.MouseMove -= new MouseEventHandler(this.btnDesktio_MouseEvent);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 重新绑定事件
|
|
/// </summary>
|
|
public void RebindEvent (MenuEventType eventType)
|
|
{
|
|
try
|
|
{
|
|
switch (eventType)
|
|
{
|
|
case MenuEventType.MouseClickEvent:
|
|
this.btnDesktop.MouseMove += new MouseEventHandler(btnDesktop_MouseMove);
|
|
this.btnDesktop.MouseClick += new MouseEventHandler(this.btnDesktio_MouseEvent);
|
|
this.ClickExecute = true;
|
|
break;
|
|
case MenuEventType.MouseHoverEvent:
|
|
default:
|
|
this.ClickExecute = false;
|
|
this.btnDesktop.MouseMove += new MouseEventHandler(this.btnDesktio_MouseEvent);
|
|
break;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
/// <summary>
|
|
/// 菜单状态
|
|
/// </summary>
|
|
public enum MenuButtonState
|
|
{
|
|
defaultState,
|
|
selectState
|
|
}
|
|
/// <summary>
|
|
/// 菜单事件
|
|
/// </summary>
|
|
public enum MenuEventType
|
|
{
|
|
MouseHoverEvent = 0,
|
|
MouseClickEvent = 1
|
|
}
|
|
}
|