Listview - 再次调用AfterLabelEdit事件并导致我的代码出现问题。 c #.NET

时间:2016-03-24 20:51:41

标签: c# .net listview label

在尝试找到解决方案之后,我无法通过任何方式让我的代码完全正常工作,因为导致异常,我发现了什么问题,但我不知道&#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);            
    }

1 个答案:

答案 0 :(得分:0)

问题解决了!

比我想象的要容易:/

只需添加e.label == null

if(e.Label == lvInterfaces.Items [ItemIndex] .Text || e.Label == null)