簡體   English   中英

如何編寫自己的ContextMenu? C#

[英]How can I write my own ContextMenu? C#

我感覺受到默認ContextMenuStrip的限制,因為它只能包含按鈕,而不能包含控件。 我想知道很長一段時間,並且我已經使用表格嘗試了它,但從未真正解決過。

我已經對如何設置事件和項目的整體想法有所了解。 我唯一的問題是繪畫方法。 當您打開ContextMenu(ContextMenuStrip)時,可以在鼠標光標上設置其位置,即使它超出了活動窗體,它也將位於那里。 (因此,我不能將Controls類用作繼承,因為它們只能將自身繪制為表單的一部分。現在,我想將Form類用作ContextMenu的基礎,但是將其隨機放置在屏幕上。

因此,我真正需要的是一類(或類似的東西),它可以自己繪制而不會出現問題,並且可以准確地放置在屏幕上。

任何提示都會很好,謝謝。

瘋狂的格雷格

您的第一個語句為假-ContextMenuStrip中可以有一個TextBox或ComboBox。

MSDN ToolStripComboBox
MSDN工具條文本框

當您的鼠標位於“此處鍵入”框中(有時很難單擊)時,從設計器中會有一個小的下拉箭頭,您可以通過該箭頭更改類型。

如果您希望允許在容器內部以自上而下的方式顯示任何類型的控件,並且可以放置...,您始終可以使用FlowLayoutPanel進行自定義控件。 通過它的屬性FlowDirection = TopDown和WrapContents = False可以保持垂直方法。 這將處理您的“菜單”基礎知識,並且新控件可以公開您希望從每個控件獲得的任何事件。 您還必須使用其Location屬性處理顯示面板和定位的邏輯。

我忘了用父窗體外部的圖形解決問題。 請注意,ContextMenus很聰明,當它們到達其父級的邊界時,它們便遠離了它。 從邏輯上講,您應該可以通過鼠標右鍵單擊按正確的方向(上/下或左/右)進行繪制。 根據您對Form的嘗試,設置StartPosition = Manual,然后在調用Show()或ShowDialog()之前,將其Location屬性分別設置為MouseClick事件參數中提供的X和Y參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM