2012-04-21 41 views
6

Tôi có một ContextMenuStrip mà tôi đính kèm vào một số điều khiển. Nó có các mục {Add, Remove, Edit}. Khi người dùng nhấp chuột phải vào một trong các điều khiển hộp danh sách của tôi (bật lên trình đơn ngữ cảnh này) và chọn 'Thêm', làm thế nào tôi có thể lấy được điều khiển hộp danh sách từ tham chiếu ToolStripMenuItem được truyền vào?Tìm kiểm soát cha mẹ của ToolStripMenuItem

private void OnAddEntry(object sender, EventArgs e) 
    { 
     // Example: ????? 
     ListBox lb = sender.Parent; 
    } 
+0

ListBox lb = ((ListBox) sender.Parent); hoặc có thể ListBox lb = (ListBox) sender.Parent.Parent); –

+0

Bạn đã thử Spy ++ chưa? –

Trả lời

14

Mark, thử điều này:

((ContextMenuStrip)(((ToolStripMenuItem)sender).Owner)).SourceControl 
+1

nếu bạn bỏ nó vào ListBox, sau đó nó hoạt động! – MarkP

+0

Cẩn thận khi sử dụng phím tắt, SourceControl sau đó có thể rỗng. – John

1

Tôi đoán bạn có thể đi lên chuỗi các bậc cha mẹ cho đến khi bạn tìm thấy hộp danh sách.

Bạn có thể tăng tốc độ này bằng cách sử dụng thuộc tính OwnerItem để đi thẳng đến thanh công cụ.

Bạn luôn có thể đặt Thẻ của mặt hàng đó thành hộp danh sách và sau đó chỉ sử dụng thẻ theo yêu cầu.

Các vấn đề liên quan