创建.NET自定义控件

时间:2009-11-14 18:29:20

标签: .net wpf winforms custom-controls

我想创建一个基本上是ListBox的控件,但每个ListItem都是一个控件集合。因此,该列表框的每个项目都是Label,CheckBox,Timer和TextBox的组合。

可以使用.NET框架完成吗?

如果是这样,您对如何入门,样本或讨论的任何链接或任何开源示例有任何建议吗?

3 个答案:

答案 0 :(得分:1)

正如Dani所说,WPF非常容易。为了让您了解它是多么简单,以下是使用Expression Blend设计器工具或使用代码的方法:

如果您只是将ListBox拖到WPF窗口或UserControl上,那么在ItemTemplate属性的Properties窗口中选择“New Template”,您将获得一个带有自定义模板的ListBox。在模板中创建一个面板(如DockPanel),然后将Labels,CheckBoxes,TextBoxes和其他控件拖入其中。

通过执行此过程,设计人员将创建类似于以下内容的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 :(得分:1)

如果WPF不是一个选项,您可以使用DataGridView控件: DataGridViewCheckBoxColumn用于复选框,2 DataGridViewTextBoxColumn用于Label和TextBox。您可以将网格的属性SelectionMode设置为FullRowSelect以选择整行。还要检查grid的CellPainting事件;你可以在那里添加一些自定义绘画代码。

答案 2 :(得分:0)

在WPF中非常容易 - 所以是的,它可以在.NET Framework中实现。 (你有WPF中的控件,可以包含其他控件,如可以有标签复选框和文本框的面板,我不确定是否有定时器控件,但我确定它可以编程)。

在Winforms中,它更难,使用网格和gridview而不是列表框可能更容易,但是还有一些工作要做。

有商业控制 - 比使这个功能更容易实现。 (DevExpress Grid for winforms)