我正在尝试创建一个文本编辑器,我有两个丰富的文本框。我使用第一个富文本框作为数字,并将其Enabled属性设置为false。然后第二个文本框就在它旁边
我目前将第一个文本框的停靠栏设置为左侧,第二个文本框的停靠栏设置为填充。但第二个一直在占据整个标签页?并稍微向左转向数字线,并隐藏在那里一点点。这是我的创建新文档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();
答案 0 :(得分: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
),填充停靠的文本框,然后是左对接的文本框。
无论哪种方式都有效
顺便说一下,尝试正确命名变量。 t
,T
,T2
不是好名字
答案 1 :(得分: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
真的是坏名字!
答案 2 :(得分:-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();
}