2017-09-11 3 views
0

削除ボタンがクリックされたときにリストボックス内の選択されたアイテムを削除するコードを持つDeleteSlectedItemListBoxメソッドを作成しました。しかし、それは働くようには見えません。リストボックスから選択したアイテムを削除する方法

コードでは、リストボックスのテキストファイルもテキストファイルで削除する必要があります。 どうすればいいですか?

private void DeleteSelectedItemListBox() 
{ 
    DataTable dt = new DataTable(); 
    string FileName = (@"C: \Users\StanleyM\Desktop\PhoneBook\PhoneBook\bin\Debug\Personal.text"); 
    StreamReader streamReader = new StreamReader(FileName); 
    string line = ""; 
    int Counter = -1; 

    while ((line = streamReader.ReadLine()) != null) 
    { 
     foreach (var item in line) 
     { 
      if (item.ToString() == SelectedItem.ToString()) 
      { 
       Counter--; 
       dt.Clear(); 
       ListBox.Remove(line); 
      }   
     }  
    } 
} 

答えて

0

を試してみてください。 <ListBox ItemsSource="{Binding YourList}" SelectedItems="{Binding YourSelectedItem}"></ListBox> は、その後、あなたの消去方法であなたが試すことができます:

private void DeleteSelectedItemListBox() 
{  
    var deletingNumber = YourList.IndexOf(YourSelectedItem); 
    var allLines = File.ReadAllLines(path).ToList(); 
    allLines.RemoveAt(deletingNumber); 
    File.WriteAllLines(path,allLines.ToArray()); 
} 
+0

ありがとうGiltanas、 –

+0

私は、削除されたボタンをクリックすると、次のエラーが表示されますSystem.IO.IOException: 'プロセスは、' C:\ Users \ StanleyM \ Desktop \ PhoneBook \ PhoneBook \ bin \ Debug \ Personal.text 'が別のプロセスで使用されているためです。 –

+0

それは動作する可能性があります。ファイルが他の場所から開かれ、閉じられていないか、他のプログラムで開かれている可能性があります。 – Giltanas

0
while (listBox1.SelectedItems.Count > 0) 
    { 
    var index = listBox1.Items.IndexOf(listBox1.SelectedItem); 
    listBox1.Items.RemoveAt(index); 
    RemoveTextLine(index); 
    } 

private void RemoveTextLine(int index){ 

    using(var sr = new StreamReader("C:\Users\StanleyM\Desktop\PhoneBook\PhoneBook\bin\Debug\Personal.text")) 
    using(var sw = new StreamWriter("C:\Users\StanleyM\Desktop\PhoneBook\PhoneBook\bin\Debug\temp.text")) 
    { 
    int line=0; 
    while((sr.ReadLine()) != null) 
    { 
     if(line != index) 
     sw.WriteLine(line); 
     line ++; 
    } 
} 

    File.Delete("Personal.txt"); 
    File.Move(tempFile, "Personal.txt"); 
} 

あなたがObservableCollentionようXAML選択した項目とあなたのリストにバインドすることができMVVMパターンを使用している場合は、この

+0

おかげShiwanka、最初にそれが方法ではありませんが、それは別の方法であると仮定しているのですか?私のViewModelのインデックスも同様にエラーが出るので、tempFileはどこから来ますか? –

+0

いくつかの一時ファイルpahを宣言して置き換え、私はすでにコードでそれをしています。 –

+0

最初にあなたのコードを置き換えながら –

関連する問題