>>>>>>>>>>>>如何给事件动态添加方法名称

21xxb 2010-03-26 06:21:17
winform程序从数据库中取值动态生成菜单,在给菜单动态加点击事件时有如下问题

foreach (var b in resourceManager.GetResourcePrivilege()){
ToolStripMenuItem subMenu = new ToolStripMenuItem();
subMenu.Text = b.ResourceName;
subMenu.Click += new EventHandler( b.ResourceCommand ); //想让该处的方法名b.ResourceCommand从数据库中提出
topMenu.DropDownItems.Add(subMenu);
}

private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}



其中new EventHandler( b.ResourceCommand );的b.ResourceCommand是从数据库中取得的一个字符串,现在的问题是,想b.ResourceCommand做为方法名称来用,可是报错。如何才能让实现把数据库中取的值转换为事件的方法名称
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
21xxb 2010-03-29
  • 打赏
  • 举报
回复
自己顶一下
龙宜坡 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ojlovecd 的回复:]

参考:
C# code

class Program
{
static void Main(string[] args)
{
Button btn = new Button();
Delegate del = Delegate.CreateDelegate(typeof(EventHandler)……
[/Quote]


挺OJ
我姓区不姓区 2010-03-26
  • 打赏
  • 举报
回复
参考:

class Program
{
static void Main(string[] args)
{
Button btn = new Button();
Delegate del = Delegate.CreateDelegate(typeof(EventHandler), typeof(Program).GetMethod("btn_Click", BindingFlags.Static | BindingFlags.NonPublic));
btn.Click += del as EventHandler;
btn.Text = "Test";
Form f = new Form();
f.Controls.Add(btn);
f.ShowDialog();
Console.ReadLine();
}

static void btn_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello");
}
healer_kx 2010-03-26
  • 打赏
  • 举报
回复
那这个太动态了,但是可以简单实现为别的方式啊。比如说好好地利用多态。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧