Как открыть файл в новой вкладке, не открывая сначала новую вкладку? Я хочу, чтобы файл открывал новую вкладку для себя, когда он открывается
Я работал над этим проектом, но когда я открываю любой файл без предварительного открытия вкладки,он выдает исключение System.NullReferenceException.
вот этот код
private void openToolStripMenuItem_Click(object sender, EventArgs e) { Stream sp; OpenFileDialog op = new OpenFileDialog(); op.Title = "Select File to Open"; op.Filter = "All files (*.*)|*.*"; if (op.ShowDialog() == DialogResult.OK) { if ((sp = op.OpenFile()) != null) { string st = op.FileName; string filetext = File.ReadAllText(st); Getnew().Text = filetext; } } }
Что я уже пробовал:
Я пробовал использовать функцию потока, но она также выдает ту же ошибку.
CHill60
На какой линии
Vijay_Meena701
На этой линии
Сайт getnew().Text = filetext;
CHill60
Нам нужно увидеть код в Getnew() - я предполагаю (потому что я не вижу), что вы всегда хотите, чтобы Getnew возвращал объект - либо вкладку, открытую пользователем, либо позицию по умолчанию. Но мы не можем помочь без кода
Vijay_Meena701
Вот оно что возвращает
частная управления richtextbox сайт getnew()
{
RichTextBox r = null;
TabPage t = tabControl1.SelectedTab;
если (t != null)
{
r = t.Controls[0] as RichTextBox;
}
возвращение Р;
}
частная newToolStripMenuItem_Click недействительным(объект отправителя, EventArgs в электронной)
{
TabPage t = new TabPage("новый документ без названия");
RichTextBox r = новый RichTextBox();
r.Dock = DockStyle.Заполнить;
Т.Контроля.Добавить(r);
tabControl1.Вкладки.Добавить(t);
}
Vijay_Meena701
на самом деле ошибка заключается в том, что я установил команду пункта меню open strip для записи любого текста, который она собирает из файла, в getnew (), который представляет собой форматированное текстовое поле, прикрепленное к элементам управления вкладками
но ошибка заключается в том, что если я пытаюсь открыть любой файл без предварительного создания новой вкладки, которая затем пристыковывается к richtextbox, файловая программа выдает исключение, и я знаю, что это правильно, потому что я не сказал ей, что делать, когда возникает такой случай, поэтому мне нужно, чтобы она сначала создала новую вкладку, а затем пристыковалась к richtextbox, а затем каждый раз отображала содержимое файла.
CHill60
Вроде того, что я сказал в решении, которое я опубликовал
Vijay_Meena701
извините, но это не работает
кстати я покончил с этой проблемой используя этот код
если (z == null)
{
TabPage newPage = новая вкладка();
tabControl1.Вкладки.Добавить(newPage);
RichTextBox rtb = новый RichTextBox();
РТБ.Док = DockStyle.Заполнить;
новая страница.Управления.Добавить(rtb);
box = newPage.Элементы управления[0] как RichTextBox;
}
теперь у меня есть новая проблема, чтобы отобразить имя файла, который открыт в заголовке вкладки
CHill60
Принцип тот же - если его там нет, то добавьте его.
Что касается имени файла в заголовке вкладки, то из вашего кода выше
newPage.Text = filename;
Vijay_Meena701
Вообще-то я новичок в этой области.
Не могли бы вы дать мне представление о том, как показать имя файла, который в данный момент открыт, чтобы он отображался в заголовке вкладки.
CHill60
Я только что это сделал ...
newPage.Text = filenameгде
filename
это имя файла, который вы открыли - вы не поделились этим кодом, поэтому я не могу использовать ваши имена переменных
Richard MacCutchan
Используйте свой отладчик, чтобы найти, где происходит ошибка, так что вы точно знаете, какая переменная является нулевой.
Vijay_Meena701
На этой линии
Сайт getnew().Text = filetext;
Richard MacCutchan
Так что же возвращает Getnew?
Vijay_Meena701
Он открывает новый элемент управления вкладкой заполненный форматированным текстовым полем когда пользователь нажимает кнопку
Richard MacCutchan
Ну, очевидно, что нет.
Vijay_Meena701
Я знаю что это не так вот в чем проблема я хочу чтобы он показывал открытую новую вкладку без запроса пользователя каждый раз
Richard MacCutchan
И, может быть, вы думаете, что мы можем догадаться, как это может произойти?
Vijay_Meena701
Ладно братан я предоставлю тебе полный код по электронной почте до завтрашнего дня на самом деле уже поздно в моей стране
Просто дай мне свой электронный идентификатор
Richard MacCutchan
Извините, но я не занимаюсь персональными консультациями. Если вам нужна помощь здесь, то предоставьте полную информацию о проблеме. Но, пожалуйста, не просто сбрасывайте свой код и не ждите, что кто-то отладит его для вас.
Vijay_Meena701
Прости меня за все, что я сказал, что ты считаешь неправильным.
Спасибо за "попытку помочь".
Richard MacCutchan
Вы не сказали ничего плохого. Но мы можем работать только с информацией, которую вы предоставляете. Мы не можем видеть ваш экран, и мы понятия не имеем, что происходит, когда вы запускаете свою программу.