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