[英]Why can't I create a RichTextBox from a reference of RichTextBox
我對RichTextBox
控件感到困惑。
我的WinForm
有一個RichTextBox
控件,寬度為100px。 我想動態創建一個,然后引用該實例。
因此,假設在我的Form
有一個名為rtbResult
的RichTextBox
我會認為我可以執行以下操作:
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";
現在,在頁面上,您有了名為r1
的RichTextBox
。 如果您這樣做:
r1 = r2;
您無需使用新的RichTextBox
替換表單中的控件,只需將相同的引用分配給變量r1
。 在您的窗體中,您仍然具有舊控件,但是兩個變量( r1
和r2
)都指向同一對象。
如果您不能簡單地用新值更新原始RichTextBox
,您可以做的是刪除舊的RichTextBox
並在相同位置添加新的RichTextBox
:
r2.Bounds = r1.Bounds;
Controls.Remove(r1);
Controls.Add(r2);
這很天真,可能需要將許多屬性從舊屬性復制到新屬性( Dock
, TabIndex
等),而且順序也很重要,因此您可能需要調用Controls.SetChildIndex()
進行正確定位(這取決於您真正要做的事情以及代碼的方式)。
rtbResult
只是一個變量,包含對控件的引用,而不是控件本身。 通過將新控件放入該變量中,您只需更改變量,原始控件仍處於表單中,並且新控件不屬於任何形式,因此在任何地方都不可見。
您必須將新控件添加到窗體中以使其可見,例如:
somePanel.Controls.Add(rtb);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.