essukki Ответов: 1

C#: подсчитайте количество записей в datagridview1, а затем сохраните их в первой строке текстового файла


Моя форма имеет один textBox1, заполненный значением 100, а dataGridView1 имеет два столбца, заполненных, как показано ниже. После нажатия кнопки button1 и сохранения их в текстовый файл, а затем очистки dataGridView1, снова заполняя вторые записи, как показано после первых записей, начиная со значения textBox1 200,
Затем добавьте в конец текстового файла, моя проблема, как я могу записать в текстовый файл количество записей 3 в первом случае и 4 во втором, в верхней позиции непосредственно справа от значения textBox1:

(Первые Записи)
100
5 100
10 105
15 99
(вторая запись)
200
25 120
34 123
45 146
60 122
Выходной текстовый файл должен быть таким:

100 3
5 100
10 105
15 99
200 4
25 120
34 123
45 146
60 122

Что я уже пробовал:

Private void button1_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(filenane, true);
sw.WriteLine(" "+textBox1.Text);
for(int row=0;row<dataGridView1.RowCount; row++)
{ 
    dataGridView1.Rows[row].HeaderCell.Value = (row + 1).Tostring();
String value =    dataGridView1[0,row].Value as string;
      if (value != null)
      {
         textLine= " \t" + textLinr + " " + 
dataGridView1[col,row].Value.Tostring();
      }
}
Sw.WriteLine(textLine);
}

1 Ответов

Рейтинг:
1

OriginalGriff

Это сложно - и я проигнорирую ваш код, поскольку он даже не будет компилироваться, не говоря уже о том, чтобы делать что-то полезное.
Почему это так сложно? Поскольку текстовые файлы не имеют "строк" - они могут содержать символы "конца строки" строка '\n', но это просто интерпретируется как символ конца строки, Когда вы читаете файл. Это означает, что если вы попытаетесь записать число в начале файла, то вам придется планировать заранее, потому что если новое число имеет больше или меньше цифр, чем существующее, вам придется переписать весь файл, чтобы он продолжал работать!

Ваш код запутан - вы добавляете данные в свой файл, да - но у вас есть цикл, который перезаписывает значение, которое вы собираетесь написать, так что будет добавлено только последнее значение, но вы проходите через все строки, чтобы попасть туда! Я настоятельно рекомендую вам сесть и подумать о том, что вы пытаетесь сделать, прежде чем идти дальше.

Что бы я сделал (кроме использования "реальной" базы данных, которая, вероятно, находится в вашем курсе через несколько недель), так это скопировал бы старый файл в новый файл, сначала записав вашу новую информацию "заголовка", а затем удалил старый файл и переименовал новый. Также взгляните на класс File: Класс Файлов (System.IO) | Microsoft Docs[^] с особой ссылкой на методы ReadAllLines и WriteAllLines - они сделают ваш код намного "чище".