Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何创建支持多个项(如列表框)的Winform用户控件_.net_Visual Studio_Winforms_Visual Studio 2010_User Controls - Fatal编程技术网

.net 如何创建支持多个项(如列表框)的Winform用户控件

.net 如何创建支持多个项(如列表框)的Winform用户控件,.net,visual-studio,winforms,visual-studio-2010,user-controls,.net,Visual Studio,Winforms,Visual Studio 2010,User Controls,我想我了解创建winforms用户控件的基础知识。我可以添加新的和选择用户控件,这将给我一个设计图面、设计器文件和代码隐藏文件等,然后我可以将其更改为继承其他用户控件(如列表框或文本框) 这次与我不同的是,用户控件需要是一个列表控件(类似于列表框),可以进行数据绑定,并且其中包含两个数据绑定控件(两个组合框) 我不知道从哪里开始?任何人都可以引用一个文档或我缺少的工具中的一些明显的位,这将使它变得快速和简单吗?我可以采取的任何方法都类似于扩展现有控件。有什么我需要注意的地方吗 谢谢 赛斯 编辑

我想我了解创建winforms用户控件的基础知识。我可以添加新的和选择用户控件,这将给我一个设计图面、设计器文件和代码隐藏文件等,然后我可以将其更改为继承其他用户控件(如列表框或文本框)

这次与我不同的是,用户控件需要是一个列表控件(类似于列表框),可以进行数据绑定,并且其中包含两个数据绑定控件(两个组合框)

我不知道从哪里开始?任何人都可以引用一个文档或我缺少的工具中的一些明显的位,这将使它变得快速和简单吗?我可以采取的任何方法都类似于扩展现有控件。有什么我需要注意的地方吗

谢谢

赛斯

编辑

我决定采取不同的方法。不过,我还是不提这个问题。这显然比我想象的困难。不幸的是,WPF不是我的选择。只需要使用数据网格。

您将无法覆盖列表控件以满足您的需求。无论如何不容易。但也有其他选择:

由于控件有自己的事件,因此可以覆盖渲染,并绘制类似于列表控件的视觉特征。接下来,您必须创建委托和事件处理程序,以便您的控件可以向表单的其余部分发出信号,说明表单中发生了什么


下一个替代方法是使用WPF执行上述操作。WPF在自定义UI方面具有更大的灵活性。

创建一个用户控件,添加一个列表框并将其设置为dock=full(或任何适合您的设计需要的)

重写DataSource属性,并让它调用一个方法,该方法将这些源组合成一个源,然后将该源绑定/重新绑定到列表中

这是有缺点的,但这是一种方法

另一种方法是不创建用户控件,而只是将所有源合并到单个源中,然后将其绑定到listbox控件

WPF在这种情况下帮不了忙

然后我可以将其更改为继承自UserControl以外的内容(如listbox或text box)

这就是您犯错误的地方…当您从UserControl派生时,您不应该更改继承。从UserControl继承使您能够在设计图面上放置多个不同的控件(如一个列表框和两个组合框)。这些组合控件构成了您的唯一(用户)控件,您应该给它一个自解释的名称。明白吗它非常简单、功能强大、可重用、有趣,我们经常使用它。


一个很好的参考可能是:,

也许是你接受答案的时候了。。。