溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ContextMenuStrip控件 位置 傳值

發(fā)布時間:2020-07-18 14:04:05 來源:網(wǎng)絡(luò) 閱讀:2043 作者:起名好難 欄目:編程語言

   對于這個控件,我們常用的方式是是直接把他從屬控件的屬性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;
}


還沒有完全吃透,僅供參考,若有更好方法望留言告知;謝謝

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI