Вопрос по c# – Программно добавить элемент управления на вкладку

2

Все, я хочу добавить кастомRichTextBox в WinFormTabPage, Я пробовал разные вещи, иллюстрируемые кодом ниже

TabPage tmpTabPage = new TabPage("Test");
tabControl1.TabPages.Add(tmpTabPage);

CustomRichTextBox tmpRichTextBox = new CustomRichTextBox();
tmpRichTextBox.LoadFile(@"F:\aaData\IPACostData\R14TData\ACT0\1CALAEOSAudit_log.rtxt");

// Attempted FIX.
tabControl1.SuspendLayout();
tabControl1.TabPages["Test"].Controls.Add(tmpRichTextBox); // This throws a NullReferenceException??
tabControl1.ResumeLayout();

tmpRichTextBox.Parent = this.tabControl1.TabPages["test"];

tmpRichTextBox.WordWrap = tmpRichTextBox.DetectUrls = false;
tmpRichTextBox.Font = new Font("Consolas", 7.8f); 

tmpRichTextBox.Dock = DockStyle.Fill;
tmpRichTextBox.BringToFront();

Прежде чем я добавлю «aAttempted FIX», код должен был выполняться без исключения, кромеCustomRichTextBox не появится Теперь я получаюNullReferenceException и я запутался в обеих ситуациях. Что я здесь не так делаю?

Приведенное ниже решение в сочетании с этим - все, что мне нужно / есть ... MoonKnight

Ваш Ответ

2   ответа
5

Что вы действительно упускаете, так это устанавливаете & quot; Имя & quot; свойство для вашей переменной TabPage. Строка, которую вы передаете в конструктор TabPage, устанавливает только свойство TabPage.Text.

Просто добавьте следующий код после создания экземпляра TabPage, и все будет в порядке:

TabPage tmpTabPage = new TabPage("Test");
tmpTabPage.Name = "Test"
// Rest of your code here

Причина, по которой вы получаете исключение NullReferenceException, заключается в следующем:

tabControl1.TabPages["Test"]

не возвращает ссылку на TabPage, потому что имя TabPage & quot; имя & quot; свойство не было установлено.

3

Попробуйте это, добавив tmpRichTextBox в tmpTabPage, а затем добавив tmpTabPage в tabControl1

        TabPage tmpTabPage = new TabPage("Test");
        CustomRichTextBox tmpRichTextBox = new CustomRichTextBox();
        tmpRichTextBox.LoadFile(@"F:\aaData\IPACostData\R14TData\ACT0\1CALAEOSAudit_log.rtxt");

        // Attempted FIX. 
        tmpTabPage.SuspendLayout();
        tmpTabPage.Controls.Add(tmpRichTextBox); // This throws a NullReferenceException?? 
        tmpTabPage.ResumeLayout();

        tmpRichTextBox.Parent = tmpTabPage;

        tmpRichTextBox.WordWrap = tmpRichTextBox.DetectUrls = false;
        tmpRichTextBox.Font = new Font("Consolas", 7.8f);

        tmpRichTextBox.Dock = DockStyle.Fill;
        tmpRichTextBox.BringToFront();

        //tmpTabPage.Controls.Add(tmpRichTextBox);
        tabControl1.TabPages.Add(tmpTabPage); 
Error: User Rate Limit Exceeded MoonKnight
Error: User Rate Limit Exceeded MoonKnight
Error: User Rate Limit ExceededNullReferenceException. MoonKnight
Error: User Rate Limit Exceeded

Похожие вопросы