前言:这篇文章主要是用来对用户操作进行记录跟踪的,可以很方便且完整的记录下哪个账号在哪个时刻对哪个按钮进行了操作。方便之后的问题排查(扯皮)或者审计追踪等。
以下代码虽然简单,但是很实用,主要是在自定义的按钮控件中进行实现,后面所有按钮进行引用即可;
其实最近几篇写了好多对于自定义按钮的操作,因为个人觉得这可能是最简单方便以及实用的方式了,也算是AOP思想的一种实现方式;.
关于按钮的差不多到这里结束了,可以结合之前的有关按钮的文章(超时登录、权限控制等)以及个人业务需要进行合并下。
-
首先还是创建用户控件,即绘制自己的按钮。在系统内所有需要记录日志的地方均使用此按钮。
-
在用户控件的
OnCreateControl()
事件中,对按钮的Click事件进行注册,并在此事件中完成记录;为了不影响用户体验,个人建议在保存的时候,可以使用异步方法。protected override void OnCreateControl()
{
base.OnCreateControl();
Click += (s, e) =>
{
try
{
Button btn = s as Button;
var parent = btn.Parent;
for (int i = 0; i < 6; i++)
{
if (parent != null)
{
if (parent is BaseForm)
{
Formname = parent.Name;
Formtext = parent.Text;
break;
}
parent = parent.Parent;
}
else
{
Formname = btn.ParentForm.Name;
Formtext = btn.ParentForm.Text;
break;
}
}
Btnname = btn.Name;
Btntext = btn.BtnText;
//记录存储代码(写入数据库等)
//....
}
catch { };
};
}