WindowsForms和C#中控件的动态自上而下列表?

WindowsForms和C#中控件的动态自上而下列表?,c#,.net,winforms,user-interface,user-controls,C#,.net,Winforms,User Interface,User Controls,在我们的项目中,我们试图创建一个下载组件,类似于Firefox或Safari中的下载窗口。也就是说,一个自上而下的下载列表是包含进度条、按钮等的自定义控件 要求是应该有一个列表,每行有一个元素。每个元素都必须是自定义控件。整个列表应该可以动态地重新调整大小,这样当您使其变长/变短时,列表会在需要时添加一个滚动条,当您使其变薄/变宽时,自定义控件应该调整到列表的宽度 我们尝试过使用FlowLayoutPanel,但没有按我们想要的方式调整大小。我们最好只需要将自定义控件的锚定设置为左侧和右侧。我们

在我们的项目中,我们试图创建一个下载组件,类似于Firefox或Safari中的下载窗口。也就是说,一个自上而下的下载列表是包含进度条、按钮等的自定义控件

要求是应该有一个列表,每行有一个元素。每个元素都必须是自定义控件。整个列表应该可以动态地重新调整大小,这样当您使其变长/变短时,列表会在需要时添加一个滚动条,当您使其变薄/变宽时,自定义控件应该调整到列表的宽度

我们尝试过使用
FlowLayoutPanel
,但没有按我们想要的方式调整大小。我们最好只需要将自定义控件的锚定设置为左侧和右侧。我们还考虑过使用
TableLayoutPanel
,但发现到目前为止,动态添加行的开销太大

这一定是一个非常常见的用例,我觉得有点奇怪,
FlowLayoutPanel
没有直观的方法来实现这一点。有没有人做过类似的事情,或者有什么秘诀或窍门让我们走上正轨

干杯

/Adam

.NET3.5SP1引入了一个Windows窗体控件,听起来它可以做你想做的事情。将其绑定到“下载”列表(或列表中表示的任何内容),并自定义每个项目面板以包含所需的控件

如果您不想使用数据绑定(如上所述,通过
DataRepeater
控件),可以使用常规
面板
控件,并将其
AutoScroll
属性设置为true(以启用滚动条)


然后,您可以手动添加自定义控件,并将每个控件的
Dock
属性设置为
Top

,这就是我们一直在做的。数据绑定解决方案对我们来说开销太大了。这种控制在VisualBasic电源组中。我如何在C#中使用它?@Adam不,它只是在VisualBasic名称空间中。您可以从任何和所有.NET语言中使用它,并且它是从.NET 3.5 SP1开始的框架的一部分。据我所知,您可以在解决方案中引用程序集,并正常使用其中的方法。编译后的.Net程序集可以无缝地相互操作。当然,我对这次集会没有具体的经验,我也不能保证我刚才在这个例子中所说的一切