调整表单大小时出现问题-C#WinForms

时间:2019-06-22 15:23:59

标签: c# winforms

我有一个表单,其中包含聊天选项。 我有2个Richtextbox和一个用于发送消息的按钮。

The form

我希望在调整表单大小时,消息框将变大(或更小),并且输入框和按钮将向下(或向上)移动,以便它们保持在消息框下方。

这是我写的代码:

    private void MainForm_SizeChanged(object sender, EventArgs e)
    {
        Rectangle screenRectangle = RectangleToScreen(ClientRectangle);

        int titleHeight = screenRectangle.Top - Top;

        int chatCurrentHeight = richTextBox2.Height;
        int chatNewHeight=Height-titleHeight - richTextBox1.Height - button1.Height - 100;
        richTextBox2.Height = chatNewHeight;
        int heightDiffernce = chatNewHeight - chatCurrentHeight;

        richTextBox1.Location = new Point(richTextBox1.Location.X, richTextBox1.Location.Y+heightDiffernce);
        button1.Location = new Point(button1.Location.X, button1.Location.Y+heightDiffernce);
    }

*** richtextbox1是输入框,richtextbox2是消息框。

它可以工作,但是当窗口很小(在消息框的大小几乎为0之后)并且我最小化窗口时,它会中断:输入框和按钮消失。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

我同意Idle_Mind。 使用tablelayoutpanel。

我将使用两个表格布局面板。 1.您的主要容器 2.一个用于您的消息并输入

然后,在包含“消息”控件的行上使用表布局面板的“百分比”属性。

也许,您的消息占80%,输入的占20%。 然后,将两个Richtextbox停靠在一起,以便它们拉伸增长和收缩。