создание пользовательского элемента управления .NET - PullRequest
0 голосов
/ 14 ноября 2009

Я хочу создать элемент управления, который по сути является ListBox, но каждый ListItem представляет собой набор элементов управления. Таким образом, каждый элемент этого списка представляет собой комбинацию Label, CheckBox, Timer и TextBox.

Можно ли это сделать с помощью .NET Framework?

Если да, то есть ли у вас какие-либо рекомендации о том, как начать работу, есть ли ссылки на примеры или обсуждения или примеры с открытым исходным кодом?

Ответы [ 3 ]

1 голос
/ 15 ноября 2009

Как говорит Дани, в WPF это очень просто. Чтобы дать вам представление о том, насколько это просто, вот как вы можете это сделать с помощью инструмента конструктора Expression Blend или с помощью кода:

Если вы просто перетащите ListBox в окно WPF или UserControl, а затем в окне «Свойства» в свойстве ItemTemplate выберите «Новый шаблон», вы получите ListBox с пользовательским шаблоном. Создайте панель (например, DockPanel) внутри шаблона и перетащите в нее метки, флажки, текстовые поля и другие элементы управления.

Следуя этой процедуре, дизайнер создаст XAML, подобный следующему:

<ListBox ItemsSource="{Binding myItems}">

  <ListBox.ItemTemplate>
    <DataTemplate TargetType="{x:Type MyItemType}">

      <DockPanel>

        <Label Content="Hello:"/>
        <CheckBox Content="Click Here" />
        <TextBox Text="Here is my text" />

      </DockPanel>

    </DataTemplate>

  </ListBox.ItemTemplate>
</ListBox>

В качестве альтернативы вы можете просто написать XAML самостоятельно. Удивительно, как легко это сделать с IntelliSense.

1 голос
/ 17 ноября 2009

, если WPF не вариант, вы можете использовать DataGridView элемент управления с: DataGridViewCheckBoxColumn для вашего флажка и 2 DataGridViewTextBoxColumn для Label и TextBox. Вы можете установить свойство SelectionMode сетки на FullRowSelect, чтобы выделить всю строку. Также проверьте событие CellPainting сетки; Вы можете добавить собственный код рисования там.

0 голосов
/ 14 ноября 2009

Это очень просто в WPF - так что да, это возможно в .NET Framework. (у вас есть элементы управления в WPF, которые могут содержать другие элементы управления, такие как панель, которая может иметь флажок метки и текстовое поле, я не уверен, есть ли элемент управления таймером, но я уверен, что его можно запрограммировать).

В Winforms это сложнее, может быть проще использовать сетку и сетку, а не список, но есть над чем поработать.

Существуют коммерческие средства управления, которые облегчат реализацию этих функций. (DevExpress Grid для winforms)

...