2015-04-04 114 views
0

我正在嘗試使文本編輯器,我有2富文本框。我將第一個富文本框用作數字,並將其Enabled屬性設置爲false。然後第二個文本框將在它旁邊對接2富文本框

我目前已將第一個文本框的停靠欄設置爲左側,第二個要填寫。但第二個繼續佔用整個頁面?然後稍稍向左走向數字線,並將其隱藏在那裏一點點。這裏是我創建新文檔void我有... T2是數字行,T是他們將鍵入到的默認文本框。

TabPage t = new TabPage("new " + getNumber()); 
tabControl1.TabPages.Add(t); 
tabControl1.SelectedTab = t; 
RichTextBox T2 = new RichTextBox(); 
t.Controls.Add(T2); 
T2.Dock = DockStyle.Left; 
T2.Enabled = false; 

RichTextBox T = new RichTextBox(); 
t.Controls.Add(T); 
T.Dock = DockStyle.Fill; 
T.Font = new Font("Microsoft San Serif", 11); 
Random R = new Random(); 
int RandomNumberHere = R.Next(1000, 100000); 
T.Text = "Welcome, type your text..."; 
T.Select(); 
+1

[winforms](http://en.wikipedia.org/wiki/Windows_Forms),對吧? – dbc 2015-04-04 03:05:15

+0

是真的嗎? – MahanGM 2015-04-04 05:59:48

+0

Dock.Fill填充。它沒有填補它填補所有的其餘部分。請使用錨點或編碼調整大小事件。要清楚你想要什麼。你當然沒有告訴我們.. – TaW 2015-04-04 07:42:46

回答

-1

有幾件事情怎麼回事:

填充了這一點;它填充整個PARENT控件。無論有沒有其他的東西。

您的其他文本框將被隱藏,直到它被設置爲啓用。

你可能會做什麼?在尋找一種方法可以有一個基於標籤頁面的大小創建文本框大小本身:

{ 

     TabPage t = new TabPage("new " + 1); 
     tabControl1.TabPages.Add(t); 
     tabControl1.SelectedTab = t; 
     RichTextBox T2 = new RichTextBox(); 
     t.Controls.Add(T2); 
     T2.Dock = DockStyle.Left; 
     T2.Enabled = true ; 

     RichTextBox T = new RichTextBox(); 
     t.Controls.Add(T); 
     T2.Dock = DockStyle.Right; 
     var AdjustedSize = T2.Size; 
     AdjustedSize.Width = t.Size.Width * 2/3; 
     T2.Size = AdjustedSize; 
     T.Font = new Font("Microsoft San Serif", 11); 
     Random R = new Random(); 
     int RandomNumberHere = R.Next(1000, 100000); 
     T.Text = "Welcome, type your text..."; 
     T.Select(); 

    } 
+0

這只是錯誤的 – Jcl 2015-04-04 05:45:52

0

的問題是,你在控制列表的末尾定義fill-docked文本框.. 。winforms喜歡首先在列表中填充停靠的元素。

迎刃而解:

RichTextBox T = new RichTextBox(); 
t.Controls.Add(T); 
T.Dock = DockStyle.Fill; 
T.Font = new Font("Microsoft San Serif", 11); 
// Add this line 
T.BringToFront(); 

或者你也可以做T2.SendToBack();T被添加到控件集合。

或者您可以簡單地創建(並添加到t.Controls),第一個填充停靠的文本框和第二個左側停靠的文本框。

無論哪種方式工作

順便說一句,嘗試正確地命名您的變量。 tTT2只是沒有好名字

0

在這裏你去:

t.Controls.Add(T2); 
t.Controls.Add(T); 

t.Controls.SetChildIndex(T, 1); 
t.Controls.SetChildIndex(T2, 0); 

t.PerformLayout(); // needed after SetChildIndex! 

T2.Dock = DockStyle.Left;  
T.Dock = DockStyle.Left; 

如果你希望你的箱子在這裏的TabPage增長是做到這一點的一種方法:

private void t_Resize(object sender, EventArgs e) 
{ 
    // assuming you want the two RTBs to fill the TabPage 
    // if you want something else, best add an anchored container panel 
    // and use its resize event instead 
    T2.Width = t.Width/4; 
    T.Width = t.Width/4; 
} 

是的,t, T and T2真的很糟糕的名字!