You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
5.8 KiB
C#
133 lines
5.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.ComponentModel;
|
|
using System.Configuration;
|
|
using System.Xml;
|
|
using ICSharpCode.Core;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Mesnac.Gui.Common
|
|
{
|
|
public delegate void ExecutionAction();
|
|
/// <summary>
|
|
/// 事件绑定处理类
|
|
/// </summary>
|
|
public class MCEventHandler
|
|
{
|
|
private Component _currentControl;
|
|
private List<Mesnac.Controls.Base.DesignAction> _MCActionList;
|
|
|
|
public MCEventHandler() { }
|
|
|
|
public MCEventHandler(Component c, object actionList)
|
|
{
|
|
this._currentControl = c;
|
|
this._MCActionList = actionList as List<Mesnac.Controls.Base.DesignAction>;
|
|
}
|
|
|
|
public Component CurrentControl
|
|
{
|
|
get { return _currentControl; }
|
|
set { _currentControl = value; }
|
|
}
|
|
|
|
public List<Mesnac.Controls.Base.DesignAction> MCActionList
|
|
{
|
|
get { return _MCActionList; }
|
|
set { _MCActionList = value; }
|
|
}
|
|
|
|
public void ExecuteAction(object sender, System.EventArgs e, string eventId)
|
|
{
|
|
try
|
|
{
|
|
string t = sender.GetType().Name;
|
|
//if (sender.GetType() == typeof(Mesnac.Controls.Default.MCButton))
|
|
//{
|
|
// if ((sender as Mesnac.Controls.Default.MCButton).MCPurview)
|
|
// {
|
|
// Mesnac.Controls.Base.DesignAction designAction = new Mesnac.Controls.Base.DesignAction();
|
|
// designAction.GUID = "941988F1F078444996F53518FAE63C31";
|
|
// designAction.Name = "通用权限验证";
|
|
// designAction.Remark = "系统登录与权限验证";
|
|
// (sender as FrmRunTemplate).LoadActionList.Add(designAction);
|
|
// }
|
|
//}
|
|
//窗体加载时的权限处理
|
|
if (sender.GetType() == typeof(FrmRunTemplate))
|
|
{
|
|
if ((sender as FrmRunTemplate).MCPurview)
|
|
{
|
|
Mesnac.Controls.Base.DesignAction designAction = new Mesnac.Controls.Base.DesignAction();
|
|
designAction.GUID = "EE88F12802884A19B5D9BE2310E2B605";
|
|
designAction.Name = "通用权限控制";
|
|
designAction.Remark = "根据权限处理界面控件";
|
|
(sender as FrmRunTemplate).LoadActionList.Add(designAction);
|
|
}
|
|
}
|
|
|
|
if (sender.GetType() == typeof(Mesnac.Controls.Default.MCButton))
|
|
{
|
|
if ((sender as Mesnac.Controls.Default.MCButton).MCPurview)
|
|
{
|
|
FrmSysLogin login = new FrmSysLogin(((sender as Mesnac.Controls.Default.Button).FindForm()) as FrmRunTemplate, sender as Mesnac.Controls.Default.MCButton);
|
|
if (login.ShowDialog() != DialogResult.OK)
|
|
return;
|
|
login.Close();
|
|
}
|
|
}
|
|
//添加单选按钮权限
|
|
//if (sender.GetType() == typeof(Mesnac.Controls.Default.MCRadioButton))
|
|
//{
|
|
// if ((sender as Mesnac.Controls.Default.MCRadioButton).MCPurview)
|
|
// {
|
|
// FrmSysLogin login = new FrmSysLogin(((sender as Mesnac.Controls.Default.MCRadioButton).FindForm()) as FrmRunTemplate, sender as Mesnac.Controls.Default.MCButton);
|
|
// if (login.ShowDialog() != DialogResult.OK)
|
|
// return;
|
|
// login.Close();
|
|
// }
|
|
//}
|
|
|
|
|
|
//LoggingService.Info("当前sender" + t);
|
|
XmlNode tmpXEventNode = PublicConfig.Instance.EventXmlDoc.SelectSingleNode(String.Format("Components/Component[@Name=\"{0}\"]", t));
|
|
if (tmpXEventNode != null)
|
|
{
|
|
XmlNodeList tmpXActionLst = tmpXEventNode.SelectNodes("Propertys/Property");
|
|
foreach (XmlNode node in tmpXActionLst)
|
|
{
|
|
System.Reflection.PropertyInfo propertyInfo = sender.GetType().GetProperty(node.Attributes["Name"].Value); //获取事件名称属性
|
|
if (propertyInfo == null)
|
|
{
|
|
continue;
|
|
}
|
|
string eventName = node.Attributes["ControlPropertyName"].Value;
|
|
if (eventName != null && eventName.Equals(eventId))
|
|
{
|
|
object actionList = propertyInfo.GetValue(sender, null);
|
|
this._MCActionList = actionList as List<Mesnac.Controls.Base.DesignAction>;
|
|
List<string> actions = new List<string>();
|
|
if (this._MCActionList != null)
|
|
{
|
|
foreach (Mesnac.Controls.Base.DesignAction action in this._MCActionList)
|
|
{
|
|
actions.Add(action.GUID);
|
|
//LoggingService.Debug(String.Format("执行{0}-{1}-{2}", action.GUID, action.Name, action.Remark));
|
|
}
|
|
}
|
|
Mesnac.ActionService.Service.Instance.Run((Mesnac.Controls.Base.IBaseControl)sender, e, actions);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LoggingService.Debug(ex.Message);
|
|
LoggingService.Debug(ex.StackTrace);
|
|
}
|
|
}
|
|
}
|
|
}
|