2015-01-30 7 views
0

Моя программа предложит пользователю номер, т. Е. 25. Затем программа начнет «основную форму» с 25 элементами управления (текстовое поле). 25 (или сколько угодно) текстовых полей (или любого другого элемента управления) необходимо будет форматировать равномерно. Мне также нужно будет получить текст (или другое свойство, если я использую другой элемент управления) в порядке слева направо и вверх. Каков наилучший способ приблизиться к этому?Лучший способ добавить «динамические» элементы управления?

+2

Если вы можете использовать WPF, начните с использования и используйте шаблоны/MVVM. Это метод * best *. – BradleyDotNET

+0

Можете ли вы перейти к более детальному описанию? Возможно ли, что WPF будет проходить через платформу? В основном OSX? –

+0

В WinForms добавьте TablelayooutPanel с требуемыми строками в соответствии с пользовательским вводом и добавьте текстовое поле внутри каждой строки. –

ответ

2

Использование WPF MVVM. В файле .XAML создайте DataTemplate с DataType ViewModel, который обеспечит привязку для вашего TextBox s, позволяет называть это TextboxViewModel. Затем с использованием элемента ItemsControl с ItemsSource от TextboxViewModel. Вы сможете создать экземпляр как можно больше TextBox, так как хотите, и сможете получить результат, просмотрев список TextboxViewModel.

+0

Можно ли переносить WPF на OSX? –

+1

Microsoft открыла свою платформу для других ОС в этом году, но я бы сказал, что немного начать программирование на C# для OSX. Вы должны использовать другой набор инструментов, такой как те, которые нацелены на OSX, или с использованием кросс-платформенной версии, такой как QT. –

+1

WPF не поддерживается Mono и недоступен для OSX. см. http://www.mono-project.com/docs/gui/wpf/ – David

0

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

0

Если WinForms, это именно то, для чего нужен FlowLayoutPanel. Просто добавьте в него элементы управления, и они автоматически упорядочиваются, при необходимости упаковывая их в следующую строку. Как уже сказал Михай, вы также можете ссылаться на эти элементы управления в списке.

Другим вариантом является использование TableLayoutPanel. Это немного сложнее изучить и использовать, но гораздо более гибким и мощным.

Смежные вопросы