您好,登錄后才能下訂單哦!
對于這個控件,我們常用的方式是是直接把他從屬控件的屬性ContextMenuStrip設置為contextMenuStrip1可以保證右鍵菜單位置的正確性。
然而有時候我們為了在一個容器特定的位置出現右鍵菜單,就需要設置ContextMenuStrip的位置了;
S1.聲明一個右鍵菜單控件;
S2.添加右鍵菜單的內容;
S3.設定使右鍵菜單跟隨鼠標點擊位置出現。關鍵的是其中的位置坐標轉換;oView.PointToScreen(e.Location);oView這個對象要選正確,就是要出現右鍵的容器,用他的坐標轉化方法來得到右鍵出現的位置;
這樣可以保證右鍵菜單出現位置正確了。
附一點代碼:
ContextMenuStrip cms = new ContextMenuStrip(); cms.Items.Add("屬性設置"); //坐標轉化保證右鍵菜單出現在點擊的位置 Point p = oView.PointToScreen(e.Location); cms.Show(p); cms.Items[0].Tag = oView; cms.Items[0].Click += ContextMenuStrip_Click;
另外在做這個開發時,我還遇到了另一個問題,我的右鍵是設置一個對象的屬性,然而在這個Click事件中獲取不到這個對象怎么辦?我試著用Tag屬性將需要的值傳遞到單擊事件中進行處理,結果還可以。
//右鍵事件 private void ContextMenuStrip_Click(object sender, EventArgs e) { XX view = ((ToolStripDropDownItem)(sender)).Tag as XX; }
還沒有完全吃透,僅供參考,若有更好方法望留言告知;謝謝
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。