向高手求救,在线等待,关于事件的问题!!!!!!!!!!!!!! 你在 button1的click事件里面 调用 Class1 的 Hello静态方法就行了 { Class1.Hello(参数);//注意 调用静态方法 用类名} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to seabirdforever(听海) 关键是button1也是动态生成的呀 Button btn = new Button();btn.Click += new EventHandler( this.Button_Clicked );//你可以把Click事件绑定到多个方法,也不一定要this.XXX,别的类的方法也可以,但是方法都要是与EventHandler委托有同样的方法签名,也就是方法的参数要一致事件方法:private void Button_Clicked( object sender,EventArgs e ){ //处理事件} 在生成 Button的时候这样写。Button aa = new Button(); aa.Click += new EventHandler(cc);Controls.Add(aa); private void cc(object sender, System.EventArgs e) { Class1.Hello(参数);//注意 调用静态方法 用类名 } 动态生成的话就像楼上两位说的。都不一样的概念嘛!只是注意:Button aa不要定义为局部的。 我觉得搂主不是你们所说的那个意思。他似乎是说,有n个方法,在程序运行的时候,可以让用户输入click button1后运行的是哪个类的那个方法。 你们都理解错了我的意思了。eyesluo(啊眼) 理解是正确的,我再重新说一遍我的问题吧。 我现在有个程序,需要动态生成控件,然后将这个动态生成的控件的事件去绑定方法,而方法事先是不知道的,只有在运行的时候由用户输入(字符串) 例如,我动态生成了一个控件button1,现在我要将button1的click事件和Class1中的hello静态方法绑定,注意,事先并不知道要用hello方法,就是说传过来的参数是“Class1。hello“这种字符串,如何通过这个字符串达到click事件被触发的时候就能够调用hello方法,谢谢 to timmy3310(Tim) ( ) 老弟,我也不想呀,现在上面要我做一个自动界面生成器,控件都是动态生成的,还要能够响应事件 好难,用字符串指定已知类的未知事件…………能不能这样,你定义很多类,他们拥有相同的一个事件。然后根据字符串决定生成哪个类的实例,然后去触发特定的那个事件 ? 呵呵,黔驴技穷,凑上的方法。给个用字符串定义要生成的窗口的例子。希望能有用Form2 form2 = new Form2();string strClassName = form2.GetType().ToString();Form frm = (Form)Activator.CreateInstance( Type.GetType( strClassName ) );frm.Show(); 能否考虑依靠一个中间过程,让button1的click事件间接触发“Class1。hello“。 to timmy3310(Tim)首先谢谢你我的程序是这样的,它是一个自动界面生成器,它是根据使用者的需要定制界面,即动态生成界面,对于生成的界面和界面元素,要能够绑定事件,就是说你要做一个。net的开发环境的简化版。 由于界面元素都是动态生成的,在绑定事件的时候,又不能事先知道应该绑定哪个方法。例如:用户现在动态生成了button1这个控件,用户需要将button1的click事件和Class1这个类的hello方法绑定。这些在我设计这个生成器的时候都是不知道的。 to timmy3310(Tim)关于反射技术,我这几天都在考虑,但是最后这个办法还是行不通的 to zhangbat(jim.) 首先谢谢你,你的那个办法我也考虑了,只是这是事件绑定,不是调用方法,这个办法好像也行不通 to tj_dns(愉快的登山者) 首先谢谢你,你说的办法我也考虑过,只是代码没有地方加 反射是可以做的,给你例子给你:string className = //用户要调用的类string methodName = //用户要调用的方法Type targetType = Type.GetType( className );//注意Class要完全限定名,如果不在当前装配件,需要先Load装配件的实例,然后调用Assembly的GetType方法object target = Activator.CreateInstance( targetType ); //创建一个实例来调用方法Button btn = new Button();EventHandler handler = (EventHandler)Delegate.CreateDelegate( typeof(EventHandler),target,methodName );btn.Click += handler;这是实例化对象的做法,如果你的方法是静态的,那么不需要实例化一个对象,这样即可:string className = //用户要调用的类string methodName = //用户要调用的方法Type targetType = Type.GetType( className );Button btn = new Button();EventHandler handler = (EventHandler)Delegate.CreateDelegate( typeof(EventHandler),targetType,methodName );btn.Click += handler; 要注意的是,输入的方法一定要和System.EventHandler委托的方法签名一样,否则在Delegate.CreateDelegate的时候将会抛出异常 已经解决,感谢大家,特别谢谢timmy3310(Tim),实在是太强了 如何在一个网页中弹出一个层并且用另外一个层遮盖整个网页 从stringbuilder中读取xml,里面有中文,怎么办? 关于实时订单提醒的实现办法讨论 怎样获取值? C# listView 项 背景色 超急问题!!!100分求助!!!怎样写自定义文件类型??(自定义文件扩展名) 我用Delphi.net写出来的页面,怎么放到服务器上去访问就会出错? 网络传送文件的序列化和反序列话的例子程序(正确后立马送分)--初学多指教 ODBC引用!!! 怎样覆盖右下角任务栏的时间图标? 砸锅卖铁求资料 一个把string写入数据库的问题!
关键是button1也是动态生成的呀
btn.Click += new EventHandler( this.Button_Clicked );
//你可以把Click事件绑定到多个方法,也不一定要this.XXX,别的类的方法也可以,但是方法都要是与EventHandler委托有同样的方法签名,也就是方法的参数要一致事件方法:
private void Button_Clicked( object sender,EventArgs e )
{
//处理事件
}
这样写。
Button aa = new Button();
aa.Click += new EventHandler(cc);
Controls.Add(aa);
private void cc(object sender, System.EventArgs e)
{
Class1.Hello(参数);//注意 调用静态方法 用类名
}
只是注意:Button aa不要定义为局部的。
他似乎是说,有n个方法,在程序运行的时候,可以让用户输入click button1后运行的是哪个类的那个方法。
我现在有个程序,需要动态生成控件,然后将这个动态生成的控件的事件去绑定方法,
而方法事先是不知道的,只有在运行的时候由用户输入(字符串)
例如,我动态生成了一个控件button1,现在我要将button1的click事件和Class1中
的hello静态方法绑定,注意,事先并不知道要用hello方法,就是说传过来的参数是
“Class1。hello“这种字符串,如何通过这个字符串达到click事件被触发的时候就能够
调用hello方法,谢谢
老弟,我也不想呀,现在上面要我做一个自动界面生成器,控件都是动态生成的,还要能够
响应事件
string strClassName = form2.GetType().ToString();
Form frm = (Form)Activator.CreateInstance( Type.GetType( strClassName ) );
frm.Show();
首先谢谢你
我的程序是这样的,它是一个自动界面生成器,它是根据使用者的需要定制界面,即动态生成
界面,对于生成的界面和界面元素,要能够绑定事件,就是说你要做一个。net的开发环境
的简化版。
由于界面元素都是动态生成的,在绑定事件的时候,又不能事先知道应该绑定哪个方法。
例如:用户现在动态生成了button1这个控件,用户需要将button1的click事件和Class1这个
类的hello方法绑定。这些在我设计这个生成器的时候都是不知道的。
关于反射技术,我这几天都在考虑,但是最后这个办法还是行不通的
首先谢谢你,你的那个办法我也考虑了,只是这是事件绑定,不是调用方法,这个办法好像
也行不通
首先谢谢你,你说的办法我也考虑过,只是代码没有地方加
string methodName = //用户要调用的方法Type targetType = Type.GetType( className );//注意Class要完全限定名,如果不在当前装配件,需要先Load装配件的实例,然后调用Assembly的GetType方法object target = Activator.CreateInstance( targetType ); //创建一个实例来调用方法Button btn = new Button();EventHandler handler = (EventHandler)Delegate.CreateDelegate( typeof(EventHandler),target,methodName );btn.Click += handler;这是实例化对象的做法,如果你的方法是静态的,那么不需要实例化一个对象,这样即可:string className = //用户要调用的类
string methodName = //用户要调用的方法Type targetType = Type.GetType( className );
Button btn = new Button();EventHandler handler = (EventHandler)Delegate.CreateDelegate( typeof(EventHandler),targetType,methodName );btn.Click += handler;