對(duì)于這個(gè)控件,我們常用的方式是是直接把他從屬控件的屬性ContextMenuStrip設(shè)置為contextMenuStrip1可以保證右鍵菜單位置的正確性。
創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元裕安做網(wǎng)站,已為上家服務(wù),為裕安各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792然而有時(shí)候我們?yōu)榱嗽谝粋€(gè)容器特定的位置出現(xiàn)右鍵菜單,就需要設(shè)置ContextMenuStrip的位置了;
S1.聲明一個(gè)右鍵菜單控件;
S2.添加右鍵菜單的內(nèi)容;
S3.設(shè)定使右鍵菜單跟隨鼠標(biāo)點(diǎn)擊位置出現(xiàn)。關(guān)鍵的是其中的位置坐標(biāo)轉(zhuǎn)換;oView.PointToScreen(e.Location);oView這個(gè)對(duì)象要選正確,就是要出現(xiàn)右鍵的容器,用他的坐標(biāo)轉(zhuǎn)化方法來(lái)得到右鍵出現(xiàn)的位置;
這樣可以保證右鍵菜單出現(xiàn)位置正確了。
附一點(diǎn)代碼:
ContextMenuStrip cms = new ContextMenuStrip(); cms.Items.Add("屬性設(shè)置"); //坐標(biāo)轉(zhuǎn)化保證右鍵菜單出現(xiàn)在點(diǎn)擊的位置 Point p = oView.PointToScreen(e.Location); cms.Show(p); cms.Items[0].Tag = oView; cms.Items[0].Click += ContextMenuStrip_Click;
另外在做這個(gè)開(kāi)發(fā)時(shí),我還遇到了另一個(gè)問(wèn)題,我的右鍵是設(shè)置一個(gè)對(duì)象的屬性,然而在這個(gè)Click事件中獲取不到這個(gè)對(duì)象怎么辦?我試著用Tag屬性將需要的值傳遞到單擊事件中進(jìn)行處理,結(jié)果還可以。
//右鍵事件 private void ContextMenuStrip_Click(object sender, EventArgs e) { XX view = ((ToolStripDropDownItem)(sender)).Tag as XX; }
還沒(méi)有完全吃透,僅供參考,若有更好方法望留言告知;謝謝
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。