停靠2个富文本框

时间:2015-04-04 01:29:53

标签: c#

我正在尝试创建一个文本编辑器,我有两个丰富的文本框。我使用第一个富文本框作为数字,并将其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();

3 个答案:

答案 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),填充停靠的文本框,然后是左对接的文本框。

无论哪种方式都有效

顺便说一下,尝试正确命名变量。 tTT2不是好名字

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

    }