質問: new StreamWriter(tempFile, false, Encoding.GetEncoding("shift-jis")); writer.WriteLine(stBuffer); writer.Close(); stResult += stBuffer + Environment.NewLine; } cReader.Close(); File.Delete(tempFile); ``` 上記のコードが、リストボックスで選択している箇所を削除する処理を除いた一連のコードです。 ``` if(cReader.ReadLine() != listBox2.SelectedItems.ToString()) ``` を使い、選択した項目と一致しなかった時にtempFileに書き込んでいこうとしましたが、うまくいきませんでした。 何かいい方法がお有りでしたら、ご教授お願いします。 ※上記のコードは複数選択された項目ではなく単数選択の項目をテキストファイルから除く処理ですが、複数選択の処理は今回の質問が解決した後に取り組もうと思っています。 .NETのバージョンは4.5です
回答: フォームと仮定した上で、listBox1という名前のListBoxコントロールが配置されているとします。 何らかのボタンのクリックイベントで保存処理を行うものとします。 ``` private void button1_Click( object sender1 , EventArgs e1 ) { var buf = new StringBuilder(); for( int i = 0; i < this.listBox1.Items.Count ; i++ ) { if( this.listBox1.SelectedIndices.Contains( i ) ) continue; buf.AppendLine( this.listBox1.Items[i] as string ); } File.WriteAllText( @"c:\test.txt" , buf.ToString() ); } ``` なお、リストボックスの項目の型は、stringとします。異なる型を使用する場合、 下記コードの this.listBox1.Items[i] as string は、nullを返します。 独自の型を実装する場合、ToStringメソッドをオーバーライドし、 this.listBox1.Items[i].ToStirng()を呼ぶようにします。