谢谢你们在下实现了,小弟实现了,麻烦各位大侠指点指点,看看小弟的理解对吗,另外还有几个问题?
窗体Form1.cs:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace Test
{
public partial class Form1 : Form
{
public int x;
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
x = x + 1;
label1.Text = x.ToString();
}
void fm2_myevent()
该方法调用 Form1_Load方法。问题1:直接在委托里添加“Form1_Load”不行吗?为什么又弄了个“fm2_myevent”。试了试,真不行,提示不匹配。必须要Form1_Load(null,null)吧,为啥呢?
{
Form1_Load(null, null);
} private void button2_Click(object sender, EventArgs e)
{
Form2 fm2 = new Form2();
Form2.myevent += new Form2.mydelegate(fm2_myevent);问题2:这句什么意思?“+=”是什么意思?是不是把“fm2_myevent”方法通过委托“Form2.mydelegate”作为参数,交给“Form2.myevent ”方法去执行?[color=#FF0000]问题3:“Form2.myevent += new Form2.mydelegate(fm2_myevent);”“必须要在“myevent事件触发之前吭”。[/color]
fm2.Show();
} }
}窗体Form2.cs:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace Test
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} public delegate void mydelegate(); 声明委托
public static event mydelegate myevent; 问题4:这个事件应该叫什么事件呢?委托的实例?
private void button1_Click(object sender, EventArgs e)
{
if (myevent != null)
{
myevent(); 调用这个方法时调用“Form1_Load”
}
}
}
}问题四:委托有什么有点,一般在什么时候用?
在下的理解:调用同一个窗口的另一个方法不用委托,可以直接调用。不同窗口之间的方法调用使用委托。问题五:“ Form2.myevent += new Form2.mydelegate(fm2_myevent);”这一句必须要放在类的方法里面,而不能直接放在类里,否则找不到“Form2.myevent ”却可以找到“Form2.mydelegate”这是为什么?
有一个疑问直接在“Form2”中实例化“Form1”为“fm1”,然后调用fm1.Form1_load事件重载行吗,必须使用委托吗?试了试是不行,看不见”fm1.Form1_load“事件。
窗体Form1.cs:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace Test
{
public partial class Form1 : Form
{
public int x;
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
x = x + 1;
label1.Text = x.ToString();
}
void fm2_myevent()
该方法调用 Form1_Load方法。问题1:直接在委托里添加“Form1_Load”不行吗?为什么又弄了个“fm2_myevent”。试了试,真不行,提示不匹配。必须要Form1_Load(null,null)吧,为啥呢?
{
Form1_Load(null, null);
} private void button2_Click(object sender, EventArgs e)
{
Form2 fm2 = new Form2();
Form2.myevent += new Form2.mydelegate(fm2_myevent);问题2:这句什么意思?“+=”是什么意思?是不是把“fm2_myevent”方法通过委托“Form2.mydelegate”作为参数,交给“Form2.myevent ”方法去执行?[color=#FF0000]问题3:“Form2.myevent += new Form2.mydelegate(fm2_myevent);”“必须要在“myevent事件触发之前吭”。[/color]
fm2.Show();
} }
}窗体Form2.cs:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace Test
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} public delegate void mydelegate(); 声明委托
public static event mydelegate myevent; 问题4:这个事件应该叫什么事件呢?委托的实例?
private void button1_Click(object sender, EventArgs e)
{
if (myevent != null)
{
myevent(); 调用这个方法时调用“Form1_Load”
}
}
}
}问题四:委托有什么有点,一般在什么时候用?
在下的理解:调用同一个窗口的另一个方法不用委托,可以直接调用。不同窗口之间的方法调用使用委托。问题五:“ Form2.myevent += new Form2.mydelegate(fm2_myevent);”这一句必须要放在类的方法里面,而不能直接放在类里,否则找不到“Form2.myevent ”却可以找到“Form2.mydelegate”这是为什么?
有一个疑问直接在“Form2”中实例化“Form1”为“fm1”,然后调用fm1.Form1_load事件重载行吗,必须使用委托吗?试了试是不行,看不见”fm1.Form1_load“事件。
{
Form1_Load(null, null);
});简写