Проблема при изменении размера формы - c # winforms - PullRequest
0 голосов
/ 22 июня 2019

У меня есть форма, которая содержит (помимо прочего) опцию чата.У меня есть 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 голосов
/ 22 июня 2019

Я согласен с Idle_Mind. Используйте панель стола.

Я бы использовал две панели макета стола. 1. ваш основной контейнер 2. один для ваших сообщений и введите

Затем используйте свойство «процент» панели макета таблицы в строке, содержащей элемент управления «сообщения».

Возможно, 80% для ваших сообщений, 20%, для вашего ввода. Затем закрепите оба richtextbox, чтобы они растягивались, растут и сжимаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...