using System;namespace 委托和事件 { public delegate void Handle(); public class Class1 {
[STAThread] static void Main(string[] args) { MenuItem menu = new MenuItem(); menu.select+=new Handle(menu_select); menu.select+=new Handle(menu_select1); menu.run(); } public static void menu_select() { Console.WriteLine("hello!");
} public static void menu_select1() { Console.WriteLine("You!"); Console.Read(); } } public class MenuItem { public event Handle select; public MenuItem() { } public void run() { select(); } } }
用API,结合以上大侠的委托和事件,就能实现 [System.Runtime.InteropServices.DllImport("user32")] private static extern int mouse_event(int dwFlags,int dx,int dy, int cButtons, int dwExtraInfo); const int MOUSEEVENTF_MOVE = 0x0001; const int MOUSEEVENTF_LEFTDOWN = 0x0002; const int MOUSEEVENTF_LEFTUP = 0x0004; const int MOUSEEVENTF_RIGHTDOWN = 0x0008; const int MOUSEEVENTF_RIGHTUP = 0x0010; const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; const int MOUSEEVENTF_MIDDLEUP = 0x0040; const int MOUSEEVENTF_ABSOLUTE = 0x8000;
...
this.click+=new EventHandler(Button_Click);
...
Button_Click(object sender, EventArgs e)
{
click_f(this,e);
}
{
public delegate void Handle();
public class Class1
{
[STAThread]
static void Main(string[] args)
{
MenuItem menu = new MenuItem();
menu.select+=new Handle(menu_select);
menu.select+=new Handle(menu_select1);
menu.run();
}
public static void menu_select()
{
Console.WriteLine("hello!");
}
public static void menu_select1()
{
Console.WriteLine("You!");
Console.Read();
}
}
public class MenuItem
{
public event Handle select;
public MenuItem()
{
}
public void run()
{
select();
}
}
}
[System.Runtime.InteropServices.DllImport("user32")]
private static extern int mouse_event(int dwFlags,int dx,int dy, int cButtons, int dwExtraInfo);
const int MOUSEEVENTF_MOVE = 0x0001;
const int MOUSEEVENTF_LEFTDOWN = 0x0002;
const int MOUSEEVENTF_LEFTUP = 0x0004;
const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
const int MOUSEEVENTF_RIGHTUP = 0x0010;
const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
const int MOUSEEVENTF_MIDDLEUP = 0x0040;
const int MOUSEEVENTF_ABSOLUTE = 0x8000;
private void Click()
{
mouse_event(MOUSEEVENTF_MOVE,-10,-10,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}
{
...
}void SomeFunction()
{
... // 模拟鼠标点击 button1 按钮
button1_Click(null, null);
}
事件的执行要靠触发
MS提供的时间是自动触发的,如果你自己定义事件的话要自己触发,这需要你使用代码来触发。这些MS都做好了,一般不用你自己来写鼠标点几这样的时间
不过楼主好好的研究时间对你的学习是很有帮助的,看以下observer模式