Неправильный ресайз при запуске программы

        public Form1()
        {
            InitializeComponent();
            Load += Form1_Resize;
        }

При ресайзе окна мышью всё нормально. А при запуске появляются вот такие пустоты:


как этого избежать?

Вы руками чтоли размер подгоняете??
Там есть нормальные компоненты. TableLayout например. Если лень с таблицей то есть свойство Anchor. Можно выставить растяжение по всем сторонам.

вы только представьте :scream:

А если нужен кастомный ресайз? А если нужно / приспичит миллиметровать попиксельно? Да мало-ли что еще может приспичить…

Ну тогда использовать WPF со своими шаблонами рендеринга. Либо переписывать контролы со своей реализацией OnPaint.

Что там может быть кастомного чего не способны решить штатные контролы. Прям интересно.

:thinking: установка ширины/высоты в процентах от размеров парента :man_shrugging:
да мало ли что еще

в винформс layout’ы конечно не такие продвинутые как в WPF, но скорее всего умеют это.

Lay out your form with a TableLayoutPanel control - Visual Studio | Microsoft Docs

image

Может нужно что-то типа Shown.

Тоже мне кастомно. Говорят же вам возьмите TableLayout

Это выглядит как какой-то костыль. Тонна ненужных манипуляций вместо пары строчек кода.

Это специально разработанный под эти нужды компонент. WF не ориентирована на какой то изощренный механизм компоновки контролов. Хотите более гибкое берите WPF.

Еще есть Dock параметр. можно там поставить полное заполнение.

Похоже, что даже определение собственной высоты это была непосильная задача для разработчиков. Они с этим не справились :clkollol:
После этого доверять им писать что-то более серьёзное - ну такое себе :man_shrugging:

Это как?

как в первом посте
При запуске программы свойство Height выдаёт меньшее значение, чем когда дёргаешь размер окна мышью.

Да уж куда им, программистам Microsoft.

ох … серьезное. )))))

Ну есть qt со своей средой разработки. и еще вот

  • 2 2 -Xcode.
  • 3 3 — NetBeans.
  • 4 4 — Eclipse.
  • 5 5 — CodeLite.
  • 6 6 — Qt Creator.
  • 7 7 — Code::Blocks.
  • 8 8 — Dev-C++

А несерьезную студию с несерьезными разработчиками надо обходить стороной. Вообще не понято что там эта кучка фрилансеров о себе возомнили.

Есть исходник найдите там ваш контрол и посмотрите логику рендеринга.

Так вы ж видимо сами так его установили и в обработчике ресайза ставите нужное.

А при чём тут они? :man_shrugging: Наверняка там тоже своих косяков хватает.

То есть, это вы хотите сказать, что WinForms лишён косяков, а глюки с ресайзом я выдумал? :thinking:

Всмысле что я установил? вот код:

            scrollBarStreams.Left = tabControlMain.Width - scrollBarStreams.Width - 10;
            scrollBarStreams.Top = 0;
            scrollBarStreams.Height = tabPageStreams.Height;
           
            panelStreams.Location = new Point(0, 0);
            panelStreams.Width = scrollBarStreams.Left;
            panelStreams.Height = tabPageStreams.Height;

Ну тут не косяк. Тут то непонимание работы механизмов и игнорирование методов которые предлагаются производителем.
Какой смысл ковырять и выравнивать все руками если есть нормальная таблица. И все будет силами самого фрейморка обрабатываться.

:thinking: может быть потому что руками это сделать проще и быстрее, написав пару строчек? :man_shrugging: и не нужны никакие таблицы

Ну написать то конечно быстрее… а вот на отладку еще не один день потратите. А если вдруг нужно будет большой проект написать где куча всяким компонентов взаимодействует и влияет друг на друга то там такие чудеса вас будут ждать что замучаетесь искать где какое выравнивание к чему приводит.

Это я уже молчу что каждое изменение размеров приводит к событию ресайза и вы рискуете своими действиями просто подвесить приложение. Оно будет вечно само себя ровнять. на пиксель но этот поток будет вечен и придется думать над костылями чтобы его хоть как то остановить.

А так то конечно. Никто вам не запрещает писать свои костыли. )))

я, наверное, устарел

Ну так вот и как винформс должен догадаться сделать это при запуске?)

а кинули б сразу какой-нибудь Anchor или Dock или TableLayout — было б всё само.

И разве у панели нет своего скролла?

Dock Fill у табконтрола, AutoScroll у вкладки, Anchor Left+Top+Right у элементов.