解決策を見つけようとした後、コードがうまく動かなくなって、例外が発生したため、問題が見つかりましたが、どうすればよいでしょうかそれが私の必要なものなら解決してください。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);
}
おそらくBeginEditを呼び出す前にe.CancelEdit paraを設定していますか? – TaW
@TaW e.label = lvInterfaces.Items [ItemIndex] .textが一致すると、次の行が使用されます。 lvInterfaces.Items [lvInterfaces.Items.Count-1] .BeginEdit(); この行からもう一度lvInterfaces_AfterLabelEdit –