Chỉ để xây dựng thêm một chút về những gì Frans đã nói ... Mặc dù ListBox sở hữu ContextMenuStrip, bạn vẫn có thể tùy chỉnh các mục trong dải menu tại thời điểm mở. Do đó, tùy chỉnh nội dung của nó dựa trên vị trí chuột trong hộp danh sách.
Ví dụ dưới đây chọn mục trong hộp danh sách dựa trên nhấp chuột phải và sau đó tùy chỉnh dải menu ngữ cảnh dựa trên mục mà người dùng đã nhấp chuột phải vào. Đây là một ví dụ đơn giản nhưng sẽ giúp bạn đi: Thêm hộp danh sách vào biểu mẫu và thêm mã này:
print(" #region Private Members
private ContextMenuStrip listboxContextMenu;
#endregion
private void Form1_Load(object sender, EventArgs e)
{
//assign a contextmenustrip
listboxContextMenu = new ContextMenuStrip();
listboxContextMenu.Opening +=new CancelEventHandler(listboxContextMenu_Opening);
listBox1.ContextMenuStrip = listboxContextMenu;
//load a listbox
for (int i = 0; i < 100; i++)
{
listBox1.Items.Add("Item: " + i);
}
}
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
//select the item under the mouse pointer
listBox1.SelectedIndex = listBox1.IndexFromPoint(e.Location);
if (listBox1.SelectedIndex != -1)
{
listboxContextMenu.Show();
}
}
}
private void listboxContextMenu_Opening(object sender, CancelEventArgs e)
{
//clear the menu and add custom items
listboxContextMenu.Items.Clear();
listboxContextMenu.Items.Add(string.Format("Edit - {0}", listBox1.SelectedItem.ToString()));
} ");
Hy vọng trợ giúp. -Mike
Nguồn
2008-12-18 14:45:25
Có thể bạn không thiết kế nó bất kỳ cách nào khác? Tôi không thể nghĩ về bất kỳ giao diện người dùng như thế này ... Tôi sẽ không bao giờ nghĩ đến việc nhấp chuột phải vào một mục hộp danh sách. – Gishu
Bạn cũng đang ở trong Winforms hay WPF? Các câu trả lời có thể thay đổi tùy theo điều đó. – Gishu