4

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

「aAttemptedFIX」を追加する前は、コードは例外なく実行されていましたが、CustomRichTextBox表示されませんでした。今、私はを取得しNullReferenceException、私は両方の状況で混乱しています。私はここで何が間違っているのですか?

4

2 に答える 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 への参照が返されません。

于 2012-05-18T17:04:58.717 に答える
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); 
于 2012-05-18T16:50:36.457 に答える