以编程方式向TabPage添加控件

4

大家好,我想在一个WinForm的TabPage上添加一个自定义的RichTextBox。我尝试了下面代码中所示的各种方法。

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个回答

7
你真正缺少的是为你的TabPage变量设置“Name”属性。 你传递给TabPage构造函数的字符串只设置了TabPage.Text属性。
在实例化TabPage之后,只需添加以下代码即可解决问题:
TabPage tmpTabPage = new TabPage("Test");
tmpTabPage.Name = "Test"
// Rest of your code here

你之所以会收到NullReferenceException异常是因为以下代码:

tabControl1.TabPages["Test"]

没有设置TabPage的“Name”属性,所以它没有返回对TabPage的引用。


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); 

仍然收到“NullReferenceException”异常。 - MoonKnight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接