Как заставить полосы прокрутки появляться на панели с изменяемыми размерами, когда содержащийся элемент управления слишком велик для него?

Простой рекурсивный алгоритм в Haskell

import Data.List

combinations 0 lst = [[]]
combinations n lst = do
    (x:xs) <- tails lst
    rest   <- combinations (n-1) xs
    return $ x : rest

Сначала определим частный случай, т. е. выбрав нулевые элементы. Он производит единственный результат, который представляет собой пустой список (т. Е. Список, содержащий пустой список).

При n> 0, x проходит через каждый элемент списка, а xs - каждый элемент после x.

rest выбирает n - 1 элементы из xs, используя рекурсивный вызов combinations. Конечным результатом функции является список, в котором каждый элемент x : rest (т. Е. Список, который имеет x в качестве главы и rest как хвост) для каждого другого значения x и rest.

> combinations 3 "abcde"
["abc","abd","abe","acd","ace","ade","bcd","bce","bde","cde"]

И, конечно, поскольку Haskell ленив, список постепенно генерируется по мере необходимости, поэтому вы можете частично оценить экспоненциально большие комбинации.

> let c = combinations 8 "abcdefghijklmnopqrstuvwxyz"
> take 10 c
["abcdefgh","abcdefgi","abcdefgj","abcdefgk","abcdefgl","abcdefgm","abcdefgn",
 "abcdefgo","abcdefgp","abcdefgq"]
16
задан Mac 3 August 2009 в 14:58
поделиться

2 ответа

Не закрепляйте свой пользовательский элемент управления. Вместо этого используйте свойство Anchor. (Прикрепите ко всем четырем сторонам). Установите свойство MinimumSize пользовательского элемента управления Установите свойство AutoScrollMinSize панели

Полосы прокрутки панели не появятся, если вы не установите его свойство AutoScrollMinSize. Установка параметра Dock пользовательского элемента управления на Fill, похоже, скрывает полосы прокрутки панели.

25
ответ дан 30 November 2019 в 21:11
поделиться

После InitializeComponent в диалоговой форме я сделал вот что, и, кажется, это сработало:

tableLayoutPanel1.AutoScrollMinSize = tableLayoutPanel1.GetPreferredSize(new Size(1, 1));

У меня есть куча вложенных панелей в таблице. Все строки и столбцы установлены на AutoSize. По какой-то причине элемент управления недостаточно умен, чтобы сообщить элементу управления прокруткой его предпочтительный размер.

2
ответ дан 30 November 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: