2013-12-09 124 views
2

我有一個PictureBox。如何從ContextMenuStrip右鍵單擊項目?

如果我右鍵點擊PictureBox,我的ContextMenuStrip(右鍵菜單)出現。

在該ContextMenuStrip是一個ToolStripMenuItem(右鍵菜單中的一個選項)。

ToolStripMenuItem上有一個事件處理如果單擊該選項會發生什麼情況。


我們從ToolStripMenuItem的「Clicked」函數開始。我需要以某種方式以編程方式返回到PictureBox。從那裏,我可以修改PictureBox。

ToolStripMenuItem - >的ContextMenuStrip - >圖片框

我會如何呢?

+0

不我確定我完全掌握了你的問題,但你是否只需要焦點返回到Picturebox? – KSdev

回答

1

如果你的菜單項的Click事件處理程序被命名爲OnToolStripMenuItemClick,下面可能是一個方法問題的方法:

private void OnToolStripMenuItemClick(object sender, EventArgs e) 
{ 
    var menuItem = sender as ToolStripMenuItem; 
    var contextMenu = menuItem.Parent as ContextMenuStrip; 
    var pictureBox = contextMenu.SourceControl; 
} 

當然,不要忘了轉換後的訪問屬性時檢查nullas

+0

不要檢查null。使用(演員),你希望它發出一聲​​巨響。 –

+0

menuItem.ToolStrip不存在,恐怕。 :( – GrassProgrammer

+0

@GrassProgrammer,我的歉意;它是'Parent'屬性[http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitem.parent(v=vs.110).aspx] ,而不是'ToolStrip'。我修正了代碼。 – RePierre

0

我不確定自己是否真正理解了您的問題,但我想您希望讓用戶在想要通過單擊右鍵取消當前操作時可以返回到圖片框。在這種情況下,你不應該實現您的單擊事件的工作,因爲左右按鍵都可以觸發點擊事件,相反,你應該處理您的工作情況「的MouseUp」,像這樣:

private void menuItemBack_MouseUp(object sender, MouseEventArgs e) 
    { 
     if (e.Button == System.Windows.Forms.MouseButtons.Left) 
     { 
      MessageBox.Show("back item is clicked"); 
     } 
     else 
     { 
      MessageBox.Show("I will come back."); 
      //do your return things here. 
     } 
    } 
相關問題