簡體   English   中英

為什么我不能從RichTextBox的引用創建RichTextBox

[英]Why can't I create a RichTextBox from a reference of RichTextBox

我對RichTextBox控件感到困惑。

我的WinForm有一個RichTextBox控件,寬度為100px。 我想動態創建一個,然后引用該實例。

因此,假設在我的Form有一個名為rtbResultRichTextBox我會認為我可以執行以下操作:

    RichTextBox rtb = new RichTextBox();
    rtb.Text =  "Hello all";
    rtb.Width = 50;
    rtbResult = rtb;

執行代碼時,結果是我頁面上的一個空RichTextBox ,原始大小為100px(例如,寬度不為50)。

請注意,在現場直播中,我正在使用文本突出顯示,因此它必須是RichTextBox ,上面的示例已刪除,以使問題更簡潔。

有什么想法我做錯了嗎?

您所做的與此沒有什么不同:

RichTextBox r1 = new RichTextBox();
r1.Text =  "I am RTB #1";
Controls.Add(r1);

RichTextBox r2 = new RichTextBox();
r2.Text =  "I am RTB #2";

現在,在頁面上,您有了名為r1RichTextBox 如果您這樣做:

r1 = r2;

您無需使用新的RichTextBox替換表單中的控件,只需將相同的引用分配給變量r1 在您的窗體中,您仍然具有控件,但是兩個變量( r1r2 )都指向同一對象。

如果您不能簡單地用新值更新原始RichTextBox ,您可以做的是刪除舊的RichTextBox並在相同位置添加新的RichTextBox

r2.Bounds = r1.Bounds;
Controls.Remove(r1);
Controls.Add(r2);

這很天真,可能需要將許多屬性從舊屬性復制到新屬性( DockTabIndex等),而且順序也很重要,因此您可能需要調用Controls.SetChildIndex()進行正確定位(這取決於您真正要做的事情以及代碼的方式)。

rtbResult只是一個變量,包含對控件的引用,而不是控件本身。 通過將新控件放入該變量中,您只需更改變量,原始控件仍處於表單中,並且新控件不屬於任何形式,因此在任何地方都不可見。

您必須將新控件添加到窗體中以使其可見,例如:

somePanel.Controls.Add(rtb);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM