Чтобы постараться не создавать чрезмерное количество записей в единственном каталоге, можно хотеть основывать каталоги создания на частях имени файла. Так, например, если у Вас есть файл, названный d7f5ae9b7c5a.png, можно хотеть сохранить его в media/d7/f5/d7f5ae9b7c5a.png. Если Ваши имена файлов будут все шестнадцатеричными тогда, то это ограничит количество записей в единственном каталоге к 256 вплоть до заключительного уровня.
Спасибо за все предложения. На этот раз решение, похоже, установило для AutoSize
значение true
как для FlowLayoutPanel
, так и для самого UserControl
.
Теперь , как получить форму, которая будет содержать этот UserControl
, а также некоторые другие элементы управления, которые я пока не могу понять, но думаю, это должен быть отдельный вопрос ...
Вы можете использовать свойство Anchor- and Dock объекта UserControl для установки параметров, чтобы края вашего элемента управления «приклеивались» к некоторым другим частям вашего UI. При изменении размера пользовательского интерфейса ваш элемент управления будет следовать за ним!
Если вы используете якоря и стыковку для всех элементов управления в своем пользовательском элементе управления и установите их так, чтобы они стыковались с краями элемента управления, размер элементов управления изменится с помощью UserControl, и теперь вы можете также установите якоря / док для UserControl.
Заключение FlowLayoutPanel
в TableLayoutPanel
позволит обеспечить правильное автоматическое изменение размера.
Ваш UserControl
должен выглядеть следующим образом :
UserControl
TableLayoutPanel (Dock-Fill)
Row1 : Label
Row2 : FlowLayoutPanel (Panel:Dock-Fill AND AutoSize, Row:AutoSize)
Row3 : Panel
Опять же, при использовании этого UserControl
, возможно, вам придется заключить его в TableLayoutPanel
, используя строку или столбец AutoSize
.
Следите за SplitContainers
, поскольку они часто нарушают баланс поведения при автоматическом изменении размера.
Я обнаружил, что лучший способ решить эту проблему - использовать некоторый код в событии ControlAdded на панели flowlayout, чтобы отрегулировать высоту панели (высоту, потому что вы использовали поток TopDown), чтобы be:
e.Control.Location.Y + e.Control.Height + some margin
и установить для свойства AutoSize самого пользовательского элемента управления значение True.
Вам также необходимо будет сделать некоторые предложения по закреплению и привязке согласно ответу Микеля.
Эта функция может быть инкапсулирована в ваш собственный элемент управления, унаследованный от FlowLayoutPanel и переопределяющий метод ControlAdded.
При добавлении элемента управления в схему потока вы можете изменить размер уже добавленных элементов управления до необходимого размера, не используя полосы прокрутки для панели макета потока. L