Ошибка при попытке прочитать файл с многострочным текстовым полем.
Итак, у меня есть 20+ richtextboxes, и все они предназначены для того, чтобы в них было набрано несколько строк. Но когда я пытаюсь загрузить этот файл, он помещает каждую строку в отдельный richtextbox вместо того, в который они все были набраны. Как мне обойти это и открыть в этом конкретном поле только то, что введено в определенный richtextbox?
Ниже приведен мой открытый код. Я могу опубликовать свой код сохранения, если кому-то нужно его увидеть. Пожалуйста, не я временно удалил флажки от открытия/сохранения, потому что я продолжал получать ошибку во время тестирования за то, что не был допустимым логическим значением. Я удалил текстовые поля и комбо-боксы из приведенного ниже кода, потому что он сказал, что сообщение было слишком длинным.
Что я уже пробовал:
private void OpenToolStripMenuItem_Click_1(object sender, EventArgs e) { ofd.Filter = "WAP Files (.wap)|*.wap"; ofd.Title = "Open File"; if (ofd.ShowDialog() == DialogResult.OK) { StreamReader read = new StreamReader(File.OpenRead(ofd.FileName)); //replacefridge_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //vhoodcab_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //vhoodnocab_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //furdown_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //exhaust1_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //exhaustkit1_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //timer1_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //exhaust2_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //exhaustkit2_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //timer2_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //replacewh_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //newcloset_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //repaircloset_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //replacestove_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //smokealarm_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //codetector_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //dryervent_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); //replacefurnace_ckbox.Checked = Convert.ToBoolean(read.ReadLine()); ...... wallcomments.Text = read.ReadLine(); floorcomments.Text = read.ReadLine(); atticcomments.Text = read.ReadLine(); fridgecomments.Text = read.ReadLine(); door1comments.Text = read.ReadLine(); door2comments.Text = read.ReadLine(); door3comments.Text = read.ReadLine(); door4comments.Text = read.ReadLine(); livingroomcomments.Text = read.ReadLine(); diningroomcomments.Text = read.ReadLine(); kitchencomments.Text = read.ReadLine(); hallwaycomments.Text = read.ReadLine(); bathroom2comments.Text = read.ReadLine(); bathroom1comments.Text = read.ReadLine(); bedroom2comments.Text = read.ReadLine(); bedroom1comments.Text = read.ReadLine(); bedroom4comments.Text = read.ReadLine(); bedroom3comments.Text = read.ReadLine(); addroom2comments.Text = read.ReadLine(); addroom1comments.Text = read.ReadLine(); whcomments.Text = read.ReadLine(); h_scomments.Text = read.ReadLine(); hvaccomments.Text = read.ReadLine(); fileName = ofd.FileName; filename_label.Text = System.IO.Path.GetFileName(fileName); read.Close(); read.Dispose(); } }
ZurdoDev
Ну, вы явно не можете использовать ReadLine. Вам нужно написать код, чтобы проверить, когда вы действительно достигли следующей строки.
Richard MacCutchan
Код делает то, что вы ему говорите, вам нужно посмотреть, правильно ли вы выбираете поля для каждой строки. Никогда не стоит предполагать, что то, что Вы читаете из файла, является правильными данными, вам нужен какой-то способ добавления некоторых метаданных, чтобы сказать вам, к какому текстовому полю принадлежит строка.
[no name]
Он будет писать в каждое текстовое поле, потому что вы назначаете "читать.ReadLine (); " каждому из них. Вот ваш код -
wallcomments.Текст = читать.Линия чтения();
напольные покрытия.Текст = читать.Линия чтения();
аттиккомменты.Текст = читать.Линия чтения();
фриджекомменты.Текст = читать.Линия чтения();
door1comments.Текст = читать.Линия чтения();
и так далее....