private SortedList<ToolStripMenuItem, Form> forms = new SortedList<ToolStripMenuItem, Form>();
private void MainForm_Load(object sender, EventArgs e)
{
formsAdd(menuCommandPrompt, new CommandPrompt());
formsAdd(menuLogScreen, new LogScreen()); //Error
}
private void formsAdd(ToolStripMenuItem item, Form form)
{
forms.Add(item, form); //Failed to compare two elements in the array.
form.Tag = this;
form.Owner = this;
}
我搞不懂它为什么会出错。在窗体加载事件的第二行发生错误。
formsadd方法只需将form和toolstip元素添加到数组(forms)中,并为此设置form的标记和所有者。在第二次调用函数时,它抛出一个错误。
CommandPrompt, LogScreen /* are */ Form //s
menuCommandPrompt, menuLogScreen /* are */ ToolStripMenuItem //s
最佳答案
您有一个SortedList
,但是ToolStripMenuItem
没有实现IComparable
,因此列表不知道如何对它们进行排序。
如果不需要对项目进行排序,则可以使用Tuple
s或Dictionary
的列表,具体取决于要执行的操作。
如果要对它们进行排序,则需要使用the overload of SortedLists
's constructor that takes IComparer
。这意味着您必须以某种方式实现该接口。