我有一个包含一些选项的上下文菜单。如果用户选择了特定的选项,我想在第二个菜单中出现一个选项列表。这些选择将来自数据存储,并且对该用户是唯一的。
我看到设计师如何静态添加一组选项,以便用户进行选择。但是,如果您需要数据而不是在设计器中设计它,您会怎么做?
答案 0 :(得分:2)
一种方法是创建一个级联菜单:在上下文菜单中,添加一个项目作为“父”项,并将一个子菜单项添加到父项。然后附加父项的DropDownOpening
事件的事件处理程序,并添加这样的内容:
private void ParentMenuItem_DropDownOpening(object sender, EventArgs e)
{
IEnumerable<string> items = GetItems();
_parentMenuItem.DropDownItems.Clear();
foreach (var item in items)
{
_parentMenuItem.DropDownItems.Add(item);
}
}
这将在每次打开时填充子菜单(根据需要添加缓存)。
从技术上讲,这可以在不添加虚拟子项的情况下工作,但通过添加子项,父菜单将显示指示存在级联子菜单的箭头。
答案 1 :(得分:0)
我会添加以下内容来为新项目建立事件处理程序:
private void ParentMenuItem_DropDownOpening(object sender, EventArgs e)
{
IEnumerable<string> items = GetItems();
_parentMenuItem.DropDownItems.Clear();
int i=0;
foreach (var item in items)
{
_parentMenuItem.DropDownItems.Add(item);
_parentMenuItem.DropDownItems[i].click += new EventHandler(menuItem_click);
i++;
}
}`enter code here`