2012-02-11 11 views
1

現在、2つのテキストボックスのテキストをテキストファイルに保存し、それをリストビューに読み込みます。どうすればいいですか?ボタンを押してもリストビューの項目だけでなくテキストファイルも削除されますので、次回プログラムを開くときに読み込まれません。リストビューとテキストファイルからアイテムとサブアイテムを削除する方法

節約のために私の現在のコードは

private void btnAddxuid_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      ListViewItem lvi = new ListViewItem(); 
      lvi.Text = txtxuidGamertag.Text; 
      lvi.SubItems.Add(txtXuid.Text); 
      listXuid.Items.Add(lvi); 
      TextWriter xuids = new StreamWriter(xuidspath, true); 
      xuids.WriteLine(txtxuidGamertag.Text + "-" + txtXuid.Text); 
      txtXuid.Clear(); 
      txtxuidGamertag.Clear(); 
      xuids.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 
+0

各項目のインデックスは、同じ行番号を持つファイル内の行に属していますか? –

+0

タイトルに「C#」などのプレフィックスを付けないでください。それがタグのためのものです。 –

+0

@ Tim Schmelter私はそれをどうやってやるか分からない –

答えて

0

である(あなたの全体的なアプローチを再加工せずに)簡単な解決策は単純でも削除ボタンのクリック時にアタッチすることです。ハンドラは、削除するアイテムを決定し(「選択済み」と仮定します)、削除して、リストビューの現在の内容でファイルに上書きします。

例あなたは離れてあなたのユーザインターフェイスから、アプリケーションでのデータとロジック」を維持しようとする必要があり、一般的には

OnRemoveButtonClickHandler() 
{ 
    listXuid.Items.Remove(listXuid.SelectedItem); 

    // open the file for overwriting 
    foreach (var item in listXuid.Items) 
    { 
     // write out each item in your format 
    } 
} 

(ノートでは、これは擬似コードです)。この場合、リスト内の要素のモデルクラスを作成し、リストアイテムのソースをそれらのアイテムのコレクションにバインドし、必要に応じてバッキングファイルソースを処理すること(つまり、起動時にデータ構造をロードしてそれはあなたがする必要があるときだけ)。プレゼンテーションは、何らかの種類のデータテンプレートによって処理されます。

興味がある場合は、WPFとMVVMを参照してください。

0

最高のアイデアは、プログラムを終了するとき、またはプログラムが未処理の例外をスローするときにのみ、すべてのアイテムをテキストファイルに保存して書き直すことです。削除または追加ボタンをクリックするたびにファイルにアクセスする必要はありません。あなたがアイデアを得ることを願って...

関連する問題