C#反射、方法调用、自动调用方法、根据按钮名称调用方法、C#按钮权限管理
根据按钮名称,直接调用方法,适用于用户对按钮的操作权限管理。
/// <summary> /// 菜单按钮点击事件 /// </summary> void usrMenu1_UserControlMenuItemClick(object sender, EventArgs e) { #region MyRegion ////BtnGetParam 获取参数 //if (Nbi.Name == "BtnGetParam") //{ // BtnGetParam_Click(sender, e); //} ////BtnDelete 删 除 //if (Nbi.Name == "BtnDelete") //{ // BtnDelete_Click(sender, e); //} ////BtnSaveForm 保 存 //if (Nbi.Name == "BtnSaveForm") //{ // BtnSaveForm_Click(sender, e); //} ////BtnSaveForm 刷新 //if (Nbi.Name == "Btnrefresh") //{ // Btnrefresh_Click(sender, e); //} //if (Nbi.Name == "BtnUpdSysID") //{ // BtnUpdSysID_Click(sender, e); //} #endregion //className是方法所在的类 try { ToolStripMenuItem Nbi = (ToolStripMenuItem)sender;//获取按钮对象 MethodInfo mm = this.GetType().GetMethod(Nbi.Name + "_Click");//调用按钮的事件 //obj是方法的返回值,Invoke的第二个参数是执行方法所要的参数,是个数组 object obj = mm.Invoke(this, new object[2] { sender, e }); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } }