Автоматические C# Изменяют размеры Формы к размеру DataGridView

Welp, просто размышление, но общий вопрос генерации случайных исходных данных, которые соответствуют regex звуки, выполнимые мне для достаточно расслабленного определения случайных и достаточно трудного определения regex. Я думаю о классическом формальном определении, которое позволяет только () | * и символы алфавита.

Регулярные выражения могут быть отображены на формальных машинах, названных конечные автоматы . Такая машина является ориентированным графом с конкретным узлом, названным конечным состоянием, узел, названный начальным состоянием и буквой от алфавита на каждом краю. Слово принято regex, если возможно запуститься в начальном состоянии и пересечь один край, маркированный каждым символом через график и конец в конечном состоянии.

можно было создать график, затем запуститься в конечном состоянии и пересечь случайные края назад, отслеживание пути. В стандартной конструкции каждый узел в графике достижим от начального состояния, таким образом, Вы не должны волноваться о делании неисправимых ошибок и необходимости отследить в обратном порядке. При достижении начального состояния остановитесь и прочитайте путь продвижение. Это - Ваше соответствие для regex.

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

, Возможно, это - начальная точка для размышления о проблеме, хотя!

Теперь, когда я выписал это, мне кажется, что могло бы быть более просто неоднократно разрешить выбор упростить regex шаблон, пока Вас не оставляют с простой строкой. Найдите первый символ неалфавита в шаблоне. Если это *, копируйте предыдущий объект некоторое количество раз и удалите *. Если это |, выберите который из объектов OR'd, чтобы сохранить и удалить остальных. Для левого paren сделайте то же, но рассмотрение символа после права соответствия paren. Это, вероятно, легче при парсинге regex в древовидное представление сначала, которое делает paren группирующейся структурой легче работать с.

человеку, который волновался, что решение, соответствует ли regex на самом деле чему-нибудь, эквивалентно проблеме остановки: Нет, регулярные языки довольно хорошего поведения. Можно сказать, описывают ли какие-либо два regexes тот же набор принятых строк. Вы в основном делаете машину выше, затем следуете алгоритму для создания канонической минимальной эквивалентной машины. Сделайте это для двух regexes, затем проверьте, эквивалентны ли получающиеся минимальные машины, который прост.

9
задан akif 22 October 2009 в 03:49
поделиться

1 ответ

Обычно элементы управления адаптируют свои размеры к размеру содержащейся формы. Чтобы настроить размер вашей формы в соответствии с размером вашего DataGridView, вы действительно должны сами определить размер, а затем установить соответствующий размер формы, не забывая учитывать дополнительный размер, требуемый меню формы. полосы и / или панели инструментов, строки состояния или другие элементы управления.

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

3
ответ дан 3 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

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