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;
}
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么它会抛出错误.第二行表单加载事件发生错误.
formsAdd方法只是将form和toolstip元素添加到数组(表单)并将表单的标记和所有者设置为此.在第二次调用函数时,它会抛出一个错误.
CommandPrompt, LogScreen /* are */ Form //s
menuCommandPrompt, menuLogScreen /* are */ ToolStripMenuItem //s
Run Code Online (Sandbox Code Playgroud)

svi*_*ick 10
你有一个SortedList,但ToolStripMenuItem没有实现IComparable,所以列表不知道如何排序它们.
如果您不需要对项目进行排序,则可以使用Tuples或a 的列表Dictionary,具体取决于您想要做什么.
如果你想让它们排序,你需要使用的构造函数的重载SortedListsIComparer.这意味着您必须以某种方式实现该接口.
| 归档时间: |
|
| 查看次数: |
23717 次 |
| 最近记录: |