在尝试找到解决方案之后,我无法通过任何方式让我的代码完全正常工作,因为导致异常,我发现了什么问题,但我不知道&#39 ;如果这就是我需要的话,我知道如何解决它。
我正在使用ListView和AfterLabelEdit事件,当用户正在编辑标签时,在编辑事件被调用之后,然后在AfterLabelEdit内部再次编辑,如果ListView的项目存在于用户输入的项目文本。
我遇到的问题是:
如果名称与listview中的项目匹配,则lvInterfaces_AfterLableEdit被调用2次,这导致" e.label"是空的,这不符合条件(e.Label == lvInterfaces.Items [ItemIndex] .Text)
任何想法如何解决这个问题?
这是我的代码:
private void lvInterfaces_AfterLabelEdit(object sender, LabelEditEventArgs e)
{
for (int ItemIndex = 0; ItemIndex < lvInterfaces.Items.Count - 1; ItemIndex++)
{
if (e.Label == lvInterfaces.Items[ItemIndex].Text)
{
MessageBox.Show("Interface already exist, please select another name.", "Interface Duplicated", MessageBoxButtons.OK);
lvInterfaces.Items[lvInterfaces.Items.Count - 1].BeginEdit();
return;
}
}
if (cAction == 'R')
file.XmlInterfaceRename(e.Label, sOldInterfaceName);
else if (cAction == 'N')
file.XmlNewInterface(e.Label);
else if (cAction == 'C')
file.CopyInterface(e.Label, InterfaceSelected);
}
答案 0 :(得分:0)
问题解决了!
比我想象的要容易:/
只需添加e.label == null
if(e.Label == lvInterfaces.Items [ItemIndex] .Text || e.Label == null)