现在有一个方法:
private void fx()
{
}
其中有很多语句了,咱们不赘述,还有另外一个方法:
void textClick(object obj,EventArgs ea)
{
Process.Start("IExplore.exe",@"http://www.baidu.com/");
}上面这个方法我希望它并不是一个,但是具体有多少个我不知道,它的数量是由方法fx()中检索数据库中的数据条数来决定的,比如说数据条数是2条,那么我希望会这样:
void textClick1(object obj,EventArgs ea)
{
Process.Start("IExplore.exe",@"http://www.baidu.com/");
}
void textClick2(object obj,EventArgs ea)
{
Process.Start("IExplore.exe",@"http://www.sina.com/");
}
也就是说会产生两个方法,类似,如果数据数是5条,那么就会产生5个方法,而且方法中的网址是通过一个变量传进去的,仅仅这样还不够,还不能实现我要的效果,当检索数据库,产生了5个方法之后,还要在public frmMain()方法中,自动生成事件:
public frmMain()
{
InitializeComponent();sportTask.textClick+=new EventHandler(textClick1);
sportTask.textClick+=new EventHandler(textClick2);
}
检索出了多少条数据,就会自动生成多少个方法,自动生成了多少个方法,就自动多少个事件,请问我如上的想法如何能够实现?谢谢大家费心!这个问题我真是搞不定,又很着急!
private void fx()
{
}
其中有很多语句了,咱们不赘述,还有另外一个方法:
void textClick(object obj,EventArgs ea)
{
Process.Start("IExplore.exe",@"http://www.baidu.com/");
}上面这个方法我希望它并不是一个,但是具体有多少个我不知道,它的数量是由方法fx()中检索数据库中的数据条数来决定的,比如说数据条数是2条,那么我希望会这样:
void textClick1(object obj,EventArgs ea)
{
Process.Start("IExplore.exe",@"http://www.baidu.com/");
}
void textClick2(object obj,EventArgs ea)
{
Process.Start("IExplore.exe",@"http://www.sina.com/");
}
也就是说会产生两个方法,类似,如果数据数是5条,那么就会产生5个方法,而且方法中的网址是通过一个变量传进去的,仅仅这样还不够,还不能实现我要的效果,当检索数据库,产生了5个方法之后,还要在public frmMain()方法中,自动生成事件:
public frmMain()
{
InitializeComponent();sportTask.textClick+=new EventHandler(textClick1);
sportTask.textClick+=new EventHandler(textClick2);
}
检索出了多少条数据,就会自动生成多少个方法,自动生成了多少个方法,就自动多少个事件,请问我如上的想法如何能够实现?谢谢大家费心!这个问题我真是搞不定,又很着急!
sportTask.textClick+=new EventHandler(textClick2);
========
这个写错了吧?
sportTask应该不是同一个吧?应该也是变化的.
如果是同一个注册到不同的textClick1,textClick2感觉没什么意义
对.
你可以把不同控件的textClick注册到同一个方法中.相当于多个控件用一个方法.一个控件用多个方法.
string[] urls = new string[10];
//给btns,urls赋值
foreach(Button btn in btns)
btn.OnClick += new System.EventHandler(btn_Click);void btn_Click(object sender, EventArgs e)
{
//根据sender获取应该使用哪个url
Process.Start("IExplore.exe",urls[i]);
}
public void Do() {
if (textclick != null) {
textclick(this, new EventArgs());
}
}
public event EventHandler textclick;
}
class Program {
static void Main(string[] args) { test t = new test();
// build methods
ArrayList methods = new ArrayList();
for (int i = 0; i <= 5; i++) {
methods.Add(new EventHandler(delegate { Process.Start("IExplore.exe", @"http://www.baidu" + i.ToString() + ".com/"); }));
}
// add event
for (int i = 0; i <= 5; i++) {
t.textclick += (EventHandler)methods[i];
}
t.Do();
}
}
public class ClickHandler
{
void textClick(object obj,EventArgs ea)
{
Process.Start("IExplore.exe",@"http://www.baidu.com/");
} }使用的时候,new这个对象,然后绑定到这个对象的textClick函数。
需要其他参数就在ClickHandler 类里面定义。
ClickHandler handler = new ClickHandler();
sportTask.textClick+=new EventHandler(handler.textClick1);
2,换一种思维考虑的话,一个事件执行一个方法
void textClick(object obj,EventArgs ea)
{
for(int i=0;i<记录数;i++)
Process.Start("IExplore.exe",传过来的数组中的值);
}