创建.NET自定义控件
我想创建一个基本上是ListBox的控件,但每个ListItem都是一组控件。因此,该列表框中的每个项目都是Label,CheckBox,Timer和TextBox的组合。创建.NET自定义控件
这可以用.NET框架来完成吗?
如果是这样,您是否对如何入门,样本或讨论的任何链接或任何开源示例有任何建议?
这在WPF中非常容易 - 所以是的,它可能在.NET Framework中。 (你有WPF中的控件可以包含其他控件,如可以有标签复选框和文本框的面板,我不确定是否有定时器控件,但我确定它可以被编程)。
在Winforms中,它很难,使用grid和gridview而不是listbox可能会更容易,但是它有一些工作要做。
有商业控制 - 将使这个功能更容易实现。 (用于winforms的DevExpress Grid)
正如Dani所说,它在WPF中非常容易。为了让你了解它有多简单,下面是你如何使用Expression Blend设计器工具或使用代码:
如果你只是将一个ListBox拖到一个WPF窗口或UserControl上,然后在属性窗口中在ItemTemplate属性中选择“New Template”,你将得到一个带有自定义模板的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这么做简直太神奇了。
如果WPF不是您的选项,您可以使用DataGridView控件: DataGridViewCheckBoxColumn代表您的复选框,2代表DataGridViewTextBoxColumn代表Label和TextBox。您可以将网格的属性SelectionMode设置为FullRowSelect以选择整个行。同时检查网格的CellPainting事件;你可以在那里添加一些自定义绘画代码。
@Pradeep:因为你提到了一个Timer,所以我假定了WinForms。如果不正确,请为清晰起见进行编辑 – 2009-11-14 18:34:26