2016-03-24 2 views
0

nach dem Versuch, eine Lösung zu finden, kann ich keine Möglichkeit zu sehen, meine Code-Arbeit mit allem, was ich brauche, fällig ist eine Ausnahme verursacht, ich fand, was das Problem ist, aber ich weiß nicht, wie kann ich löse es, wenn es das ist, was ich brauche.Listview - AfterLabelEdit-Ereignis wird erneut aufgerufen und verursacht Probleme mit meinem Code. C#. NET

Ich benutze ListView und AfterLabelEdit Ereignis, wenn der Benutzer die Beschriftung bearbeitet, nachdem Bearbeitung das Ereignis aufgerufen wird, dann innerhalb der AfterLabelEdit ich bearbeite wieder, wenn ein Element der ListView mit dem Element Text vorhanden ist dass der Benutzer eingegeben hat.

Problem, das ich habe, ist:

lvInterfaces_AfterLableEdit 2 mal mit einem Gegenstand, wenn der Namen Spiel dieses in der Listenansicht aufgerufen wird, verursacht, dass „e.label“ leer ist, und das funktioniert nicht mit der Bedingung, (e.Label == lvInterfaces.Items [ItemIndex] .Text)

irgendeine Idee, wie man das löst?

dies ist mein Code:

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

vielleicht setzen Sie den e.CancelEdit para vor (?) Aufruf BeginEdit wieder? – TaW

+0

@TaW was passiert, wenn die e.label = lvInterfaces.Items [ItemIndex] .text übereinstimmen, dann wird folgende Zeile verwendet: lvInterfaces.Items [lvInterfaces.Items.Count - 1] .BeginEdit(); Also rief diese Zeile wieder lvInterfaces_AfterLabelEdit –

Antwort

0

Problem gelöst!

war sehr einfach, als ich erwartet:/

nur e.label hinzufügen == null

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

Verwandte Themen