1. 程式人生 > >C#呼叫事件

C#呼叫事件

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
這裡如何呼叫btnkill_Click的事件?
}
private void btnKill_Click(object sender, EventArgs e)
{
messagebox.shou("123");
}
麻煩說詳細點,謝謝!
回答:
最佳答案 事件是一個對像的一個行為發生後觸發另一個物件的一個行為的機制。
注意,類只實現自己的行為,而事件的觸發事實上是要通過主程式。
例如貓一叫,老鼠就要逃跑。

class Cat
{
private string name;

public Cat():this("無名貓")
{
}

public Cat(string name)
{
this.name = name;
}

public delegate void CatShutEventHandler();
public event CatShutEventHandler CatShut;

public void shut()
{
Console.WriteLine("我是" + name + ":喵!");
if (CatShut != null)
{
CatShut(); //觸發事件
}
}

}

class Mouse
{
private string name;

public Mouse() : this("無名小老鼠")
{
}

public Mouse(string name)
{
this.name = name;
}

public void Run()
{
Console.WriteLine("我是"+name+",貓來了,快跑!");
}
}



class Program
{
static void Main(string[] args)
{
Cat cat = new Cat("大丑貓");
Mouse mouse1 = new Mouse("運動鼠");
Mouse mouse2=new Mouse("小花鼠");

//事件發生後,那些行為應該做出
反應

cat.CatShut += new Cat.CatShutEventHandler(mouse1.Run);
cat.CatShut += new Cat.CatShutEventHandler(mouse2.Run);

cat.shut(); //貓叫,注意,在此方法中有觸發事件的程式碼 CatShut();
}
}

回答者: youngbo_2008 - 試用期 一級 10-15 21:03 我來評論>>
其他回答 共 8 條 this.btnkill_Click(引數)

回答者: yxcncoo - 試用期 一級 10-15 14:48

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
this.btnKill_Click(NULL, NULL)
//這裡如何呼叫btnkill_Click的事件?
}
private void btnKill_Click(object sender, EventArgs e)
{
messagebox.shou("123");
}

回答者: beijidefeng - 魔法師 五級 10-15 14:51

可以
用事件共用嘛。
在dataGridView1_KeyDown事件裡選擇你寫好的btnkill_Click事件,不就OK了。這樣當你出發keydown事件時就執行btnkill_Click了。

回答者: hundredpig - 經理 五級 10-15 15:01

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
ShowMsg();
}
private void btnKill_Click(object sender, EventArgs e)
{
ShowMsg();
}

private void ShowMsg()
{
messagebox.show("123");
}

回答者: yxliuway - 助理 三級 10-15 15:17

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
btnKill_Click(null, null) ;
}

回答者:
(點小圖檢視大圖)
點選圖片看大圖
_凍結_ - 副總裁 十級 10-15 15:26

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
//可能你不需要判斷當前觸發的物件,因此可以直接傳入null,如下:
btnKill_Click(null, null) ;
}

回答者: guobayang - 見習魔法師 二級 10-15 16:31

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
this. btnKill_Click(null,null)//傳空值就行了

}

回答者: fangcheng96 - 助理 三級 10-15 21:18

一般向第二個引數都是EventArgs的兩個事件直接用下面的方法就行了,引數不同的化就試試button2_Click(this,null);(第二種沒試過)
private void button1_Click(object sender, EventArgs e)
{
button2_Click(this,e);
}
private void button2_Click(object sender, EventArgs e)
{
messagebox.shou("123");