2012-02-24 3 views
5

Nếu tôi có menu ngữ cảnh, bạn có thể tham gia menu này với một menu khác không? Vì vậy, bạn nhận được:Tham gia các menu ngữ cảnh

Menu 1 Item 1 
    Menu 1 Item 2 
    Menu 1 Item N 
    --------- 
    Menu 2 Item 1 
    Menu 2 Item 2 
    Menu 2 Item N 

Hãy lấy một ví dụ về một chương trình notepad-như thế nào. Có sự lặp lại trong các menu trong đó có một bộ công cụ tiêu chuẩn xuất hiện trong cả trình đơn chỉnh sửa và menu ngữ cảnh điều khiển chỉnh sửa (Cắt, Sao chép, Dán, Chọn Tất cả ...).

Tôi muốn có một menu gọi là ClipboardTools, sẽ xuất hiện trong cả menu Chỉnh sửa và kiểm soát ngữ cảnh, mà không cần phải tạo các mục nhiều lần. Tất nhiên trong trường hợp này sự lặp lại không phải là xấu, nhưng tôi phải đối phó với các menu lớn hơn xuất hiện trong 3-4 menu khác nhau, và lý tưởng không phải là menu phụ.

Trả lời

5

Có. Vì mỗi menuItem là một điều khiển riêng biệt, bạn có thể thêm cùng một menuItem vào cả hai trình đơn;

var joinedMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 
    menu1.Items.Add(joinedMenuItem); 
    menu2.Items.Add(joinedMenuItem); 

Giống như cách bạn có thể thêm các mục từ menu này sang menu khác;

menu1.Items.AddRange(menu2.Items); 

Đó là thời gian để nói rằng:
ToolStripMenu tiểu mục là nó Items tài sản.
ToolStripMenuItem các mục con nằm trong số Thuộc tính DropDownItems.

Vì vậy, nếu bạn có hai đầu menu-mục (như File và chỉnh sửa) và bạn muốn loại bỏ subitems chia sẻ:

foreach (var item in topMenuItem2.DropDownItems) 
    { 
     topMenuItem1.DropDownItems.Remove(item); 
    } 

Trong cuộc sống thực, nếu ai muốn hệ thống menu linh hoạt như vậy, có thể xảy ra nhiều nhất một sẽ tạo tổng danh sách các mục menu. Và có thể tập hợp con các mục menu theo danh mục. Sau đó, người ta sẽ thêm các mục menu từ danh sách hoặc bộ đó vào menu được hiển thị.

Ví dụ: bạn có thể cung cấp khả năng cho người dùng tùy chỉnh menu hoặc tạo phần menu tùy chỉnh của riêng họ. Vì nó được thực hiện trong Visual Studio.

+0

Đó là để thêm các mục riêng lẻ, có cách nào để nối tất cả chúng một cách dễ dàng không? – Matt

+0

Đã cập nhật câu trả lời. Điều đó có trả lời câu hỏi của bạn không? Tôi có thể cung cấp thêm ví dụ – MajesticRa

+0

Cảm ơn bạn rất nhiều. Điều này giải thích rất nhiều. – Matt