2011-07-28 12 views
0

2列のDataGridViewがあるというプログラムを作った。最初の列は読み取り専用のテキストボックスです(ユーザーは変更できません)。 2番目の列はすべての行に同じコンボボックスがあります。フォームの要素を保存する

the program before opening a file

ユーザーがコンボボックスを変更した場合、その後、私は要素がそう、彼はコンボボックスが彼の選択に選びだしされるプログラムを開き、次の時間を保存したい、プログラムを終了します。

the program after opening a file

私は2つのテキストファイル、example1.txtとexample2.txtにおける第1および第2列の要素を保存するために管理しているが、私は、保存された要素が再配置させる方法がわかりませんプログラムが開かれると、datagridviewに格納されます。

また、txtファイルは、csvファイルのあるパスに保存されます。私はそれがexeのパスで保存されたい。

private void button1_Click(object sender, EventArgs e) 
      { 
       string filename = ""; 
       DialogResult result = openFileDialog1.ShowDialog(); 
       if (result == DialogResult.OK) 
       { 
        filename = openFileDialog1.FileName; 
       textBox1.Text = filename; 
       string line; 
      // Read the file and display it line by line. 
      System.IO.StreamReader file = new System.IO.StreamReader(textBox1.Text); 

      stringforData = file.ReadLine();  
      while ((line = file.ReadLine()) != null) 
      { 

       fileList.Add(line.Split(';')); 
      } 

      file.Close(); 



      this.ToDataGrid(); 
     } 
    } 

private void button2_Click(object sender, EventArgs e) 
     { 

    //************* COLUMN 2 TO STRING[] ************************************ 
      string[] colB = new string[dataGridView1.Rows.Count]; 



      for (int i = 0; i < dataGridView1.Rows.Count; i++) 
       { 

        colB[i] = Convert.ToString(dataGridView1.Rows[i].Cells[1].Value); 
        File.WriteAllLines("settings2.txt", colB); 
       } 
     //************************************************************************* 
} 
    public void ToDataGrid() 
     { 
      string[] split = stringforData.Split(';'); 


     foreach (string item in split) 
     { 
      dataGridView1.Rows.Add(item); 
     } 
     File.WriteAllLines("settings1.txt", split); 
} 

おかげで、
ジョージ

答えて

2

をあなたにDataSetオブジェクトのグッズに建てられ、あなたのグリッドを保存したデータの一部を活用することができます:ここでは

は、私がこれまでに作ったものですXMLファイルを読み込んで、再びアプリを起動するとグリッドに読み込みます。

 //note that this will just save it in the bin folder 
     //you'll want to use a better path 
     string settingsFile = "GridSettings.xml"; 
     DataTable gridData = null; 

     public FormSaveFoo() 
     { 
      InitializeComponent(); 
      PrepareSettingsDataSource(); 
      SetUpDataSourceBindings(); 

     } 

     private void PrepareSettingsDataSource() 
     { 
      //see if have a settings file 
      if (File.Exists(settingsFile)) 
      { 
       //load up the settings 
       DataSet settings = new DataSet(); 
       settings.ReadXml(settingsFile); 
       if (settings.Tables.Count > 0) 
       { 
        gridData = settings.Tables[0]; 
       } 
      } 
      else 
      { 
       CreateSettingsTable(); 
      } 
     } 

     private void CreateSettingsTable() 
     { 
      gridData = new DataTable(); 
      gridData.Columns.Add(new DataColumn("Name")); 
      gridData.Columns.Add(new DataColumn("Text")); 
     } 

     private void SetUpDataSourceBindings() 
     { 

      dataGridView1.Columns["NameColumn1"].DataPropertyName = "Name"; 
      dataGridView1.Columns["TextColumn1"].DataPropertyName = "Text"; 
      dataGridView1.DataSource = gridData; 
     } 


     private void button1_Click(object sender, EventArgs e) 
     { 
      //add the grid data to a dataset and then write it to a file 
      DataSet persistSettings = new DataSet(); 
      persistSettings.Tables.Add(gridData); 
      persistSettings.WriteXml(settingsFile); 
     } 
+0

'dataGridView1.Columns [ "NameColumn1"] DataPropertyName = "名前" を行うかを理解することはできません。 ' ' dataGridView1.Columns [ "TextColumn1"] DataPropertyName = "テキスト"; '' gridData = settings.Tables [0]; ' 行が..... は助けてくださいよ! –

+0

dataGridView1.Columns ["NameColumn1"]。DataPropertyName = "Name";グリッド列に、リンクするデータ可能な列を通知します。 gridData = settings.Tables [0]; XMLから読み取られたデータセットの最初のテーブルを取得し、グリッドにバインドされたデータテーブルに割り当てます。 – dbugger

+0

「オブジェクトのインスタンスがオブジェクトのインスタンスに設定されていません」というエラーが表示されます。 –

関連する問題