2016-03-24 5 views
0

解決策を見つけようとした後、コードがうまく動かなくなって、例外が発生したため、問題が見つかりましたが、どうすればよいでしょうかそれが私の必要なものなら解決してください。Listview - AfterLabelEditイベントが再度呼び出され、自分のコードで問題が発生しています。 C#.NET

私はListViewとAfterLabelEditイベントを使用しています。ユーザーがラベルを編集しているときに、イベントが呼び出された後、AfterLabelEditの中で、ListViewのItemがアイテムテキストユーザーが入力した私がいる

問題は次のとおりです。

lvInterfaces_AfterLableEditが呼び出され、このリストビュー内の項目と名前が一致する「e.labelは」空であることを引き起こしていると、これが条件で作業されていない場合は2倍(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

おそらくBeginEditを呼び出す前にe.CancelEdit paraを設定していますか? – TaW

+0

@TaW e.label = lvInterfaces.Items [ItemIndex] .textが一致すると、次の行が使用されます。 lvInterfaces.Items [lvInterfaces.Items.Count-1] .BeginEdit(); この行からもう一度lvInterfaces_AfterLabelEdit –

答えて

0

問題:

これは私のコードです!

は、私が予想以上に非常に簡単ました:/

だけe.labelを追加== nullの

(e.Label == lvInterfaces.Items [ItemIndex]の.text || e.Label ==場合null)

関連する問題