2016-12-09 2 views
0

, поэтому моя проблема в том, что я не могу сделать свой DataGridView доступным для чтения из текстового файла, уже созданного, не знаю, что делать на самом деле, новой для C#, так что я надеюсь, что вы можете мне помочь: DКак мне заставить DataGridView читать информацию о текстовом файле C#

Вот мой код, чтобы сохранить значения из моей сетки:

private void buttonGuardar_Click(object sender, EventArgs e) 
{ 
    string[] conteudo = new string[dataGridView1.RowCount * dataGridView1.ColumnCount]; 
    int cont = 0; 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 
     foreach (DataGridViewCell cell in row.Cells) 
     { 
      conteudo[cont++] = cell.Value.ToString(); 
     } 
    } 
    File.WriteAllLines("dados.txt", conteudo); 

И теперь, от другой формы, существует другая сетевая который должен быть заполнен значениями, сохраненными в этом файле Настоящий код:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.IO; 


namespace WindowsFormsApplication31 
{ 
    public partial class Form3 : Form 
    { 
     DateTime start, end; 

     private void Form3_Load(object sender, EventArgs e) 
     { 
      textBox1.Text = start.ToString("dd-MM-yyyy"); 
      textBox2.Text = end.ToString("dd-MM-yyyy"); 
     } 

     public Form3(DateTime s, DateTime e) 
     { 
      InitializeComponent(); 
      start = s; 
      end = e; 
     } 
    } 
} 

В заключении, оба из сетки должен иметь 4 ячейки:

0-Designação 1-Грий 2-ДОБЛЕСТЬ 3-данные

И второй из Form3, следует прочитать текстовый файл в правильном порядке

Надеюсь, вы можете мне помочь, спасибо.

+0

Вы можете сохранить datagridview в csv и загрузить этот CSV-файл из другой формы. – Damith

ответ

0

Пожалуйста, попробуйте это ниже. Я экспортировал данные сетки в текстовый файл как ту же структуру, что и в сетке, как показано ниже.

private void button1_Click(object sender, EventArgs e) 
    { 
     TextWriter writer = new StreamWriter("Text.txt"); 
     for (int i = 0; i < DataGridView1.Rows.Count; i++) 
     { 
      for (int j = 0; j < DataGridView1.Columns.Count; j++) 
      { 
       writer.Write(DataGridView1.Rows[i].Cells[j].Value.ToString() + "\t"); 
      } 
      writer.WriteLine(""); 

     } 
     writer.Close(); 
    } 

Создан новый класс со свойствами, как имена столбцов и метод для загрузки экспортированных данных в коллекцию списка класса, как показано below.Here в этом примере, моя сетка имеет два столбца Имя и Marks.so я объявил эти два свойства в моем классе пользователя

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 

namespace WindowsFormsApplication1 
{ 
public class User 
{ 

    public string Name { get; set; } 
    public string Marks { get; set; } 


    public static List<User> LoadUserListFromFile(string path) 
    { 
     var users = new List<User>(); 

     foreach (var line in File.ReadAllLines(path)) 
     { 
      var columns = line.Split('\t'); 
      users.Add(new User 
      { 
       Name = columns[0], 
       Marks = columns[1] 

      }); 
     } 

     return users; 
    } 
}} 

Теперь на события загрузки формы второй формы, вызовите метод выше и привязку к второй сетке, как показано ниже

private void Form2_Load(object sender, EventArgs e) 
    { 
     dataGridView2.DataSource = User.LoadUserListFromFile("Text.txt"); 

    } 

Просьба отметить это как ответ, если это поможет.

+0

Спасибо большое, paul, это действительно сработало, но еще одна проблема, я хочу сохранить всю информацию, которую я получил, плюс информацию, которая будет вставлена ​​в будущем. Другими словами, я хочу добавить всю информацию текстового файла – mptdias

+0

, используя строку кода, чтобы создать текстовую запись, чтобы сохранить всю информацию. – paul

+0

TextWriter writer = новый StreamWriter («Text.txt», true); – paul