Редактировать : поскольку вы отредактировали вопрос и задали совершенно другую вещь:
У вас есть свойство Anchor
button2, установленное влево и Bottom , так что оно будет явно перемещаться при изменении размера формы, чтобы поддерживать одинаковое расстояние между кнопкой и нижней частью форма.
Чтобы избежать этого, вы можете либо установить для свойства Anchor
значение Top, либо соответственно изменить расположение кнопки при изменении размера формы. Например:
int t = button2.Top;
ToggleRtbVisibility();
button2.Top = t;
Оригинальный ответ :
1) Если вы хотите переключить «показать и скрыть», скрывайте и отображайте элемент управления, не удаляйте его.
2) Я подозреваю, что вы проверили свойство Size
формы вместо свойства ClientSize
, но вы изменяете значение ClientSize
, Кроме того, не используйте фиксированные числа для изменения размера, вместо этого рассчитайте их.
Попробуйте что-то вроде этого:
private void ToggleRtbVisibility(bool hide)
{
rtbLog.Visible = !hide;
int preservedHeight = rtbLog.Height + rtbLog.Margin.Top + rtbLog.Margin.Bottom;
if (hide)
{
this.Height -= preservedHeight;
}
else
{
this.Height += preservedHeight;
}
}
И если вы не хотите использовать параметр для явного указания, показывать или скрывать элемент управления, вы можете изменить приведенный выше метод на что-то вроде:
private void ToggleRtbVisibility()
{
rtbLog.Visible = !rtbLog.Visible;
int preservedHeight = rtbLog.Height + rtbLog.Margin.Top + rtbLog.Margin.Bottom;
if (rtbLog.Visible == false)
this.Height -= preservedHeight;
else
this.Height += preservedHeight;
}
Надеюсь, это поможет.