在前面有一篇文章中,逍遙一生已經介紹了如何在c#表單程式中給控制項添加右鍵菜單以及給不同的子功能表添加不同的事件: c#表單(winform)程式給控制項添加右鍵菜單及給不同子功能表添加不同事件的方法 在這篇文章中,逍遙一生將給大家介紹一下c#判斷右鍵菜單(ContextMenuStrip)是從哪個控制項彈出來的方法。 逍遙一生在用C#做一個網路教室程式的時候,需要在表單上放 本文來自逍遙一生:http://www.xiaoyaolife.com/ 兩個Panel控制項,裡分分別有一個Label,分別是label1,text是192.168.1.2,和label2,text是192.168.1.3,代表用戶端的兩台客戶機, 這兩個label都綁定了一個叫ContextMenuStrip1的控制項,菜單有兩個,一個是關機,一個是重啟。 由於兩個表徵圖代表兩個不同的用戶端,右鍵菜單有兩個子功能表,一個是關機,一個是重啟,很明顯,右擊哪個用戶端panel,彈出的菜單及執行的命令都是一樣的,那我如何知道點了關機以後到底是讓哪個用戶端關機呢?本文來自逍遙一生:http://www.xiaoyaolife.com/ 雙擊contextMenuStrip1在它的opening事件中寫入下面的代碼: private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) { string whichcontrol_name= (sender as ContextMenuStrip).SourceControl.Name; MessageBox.Show(whichcontrol_name); } 運行結果: 右擊panel2中的label2 有的朋友說你這有什麼用,也得到到那個label中的ip值, 本文來自逍遙一生:http://www.xiaoyaolife.com/ 看下面的方法: 1、 private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) { Panel whichcontrol_name= (Panel)(sender as ContextMenuStrip).SourceControl; Label l = (Label)whichcontrol_name.Controls[0]; MessageBox.Show(l.Text); } 或者本文來自逍遙一生:http://www.xiaoyaolife.com/ 2、 private void Form1_Load(object sender, EventArgs e) { panel1.Name = "192.168.1.2"; panel2.Name = "192.168.1.3"; } private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) { string whichcontrol_name= (sender as ContextMenuStrip).SourceControl.Name; MessageBox.Show(whichcontrol_name); } 這次我右擊panel1中的label1 結果是: 當然或許用戶端的panel是動態添加的,反正在添加的時候給它一個name就可以了。 本文來自逍遙一生:http://www.xiaoyaolife.com/ 我們可以定義一個全域變數 string ip = null; private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) { string whichcontrol_name= (sender as ContextMenuStrip).SourceControl.Name; ip = whichcontrol_name ; } 這樣就在全域範圍內可以調用這個ip值了,也就是知道了你現在正在操作哪個用戶端。 |