-->

编程控件添加到的TabPage(Programmatically Add a Control to

2019-06-25 08:16发布

好,我想自定义添加RichTextBox到一个WinForm TabPage 。 我试图通过下面的代码说明各种各样的事情

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 ,我在这两种情况下迷茫。 我在做什么错在这里?

Answer 1:

你真正缺少的是设置你的TabPage变量的“名称”属性。 你传递到的TabPage的构造函数的字符串仅设置TabPage.Text财产。

只要您的实例化后的TabPage添加以下代码,你应该罚款:

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

你得到的NullReferenceException的原因是因为下面的代码:

tabControl1.TabPages["Test"]

不返回TabPage的一个参考,因为没有设置的TabPage的“名称”属性。



Answer 2:

通过将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); 


文章来源: Programmatically Add a Control to a TabPage