2008-08-26 56 views
4

在我们的项目SharpWired中,我们尝试创建一个类似于Firefox或Safari中的下载窗口的下载组件。也就是说,一个单独的自上而下的下载列表是包含进度条,按钮和不包含的自定义控件。WindowsForms和C#中控件的动态自顶向下列表?

要求是应该有一个单一的列表,每行有一个元素。每个元素必须是自定义控件。整个列表应该动态调整大小,以便当它变长/变短时,列表会在需要时添加滚动条,并且当​​您将它变得更薄/更宽时,自定义控件应调整为列表的宽度。

我们尝试过使用FlowLayoutPanel,但没有按照我们想要的方式调整大小。最好我们只需要将自定义控件的锚定设置为左侧&右侧。我们也考虑过使用TableLayoutPanel,但发现动态添加行是迄今为止开销过大的原因。

这一定是一个相当普遍的用例,对我来说这似乎有点奇怪,FlowLayoutPanel没有直观的方式来做到这一点。 有没有人做过类似的事情或有提示或技巧让我们进行?

干杯!
/Adam

回答

2

如果你不想使用数据绑定(通过DataRepeater控制,如上面提到的),你可以使用正Panel控制及其AutoScroll属性设置为true(启用滚动条)。

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

1

.NET 3.5 SP1引入了一个DataRepeater Windows窗体控件,它听起来像它会做你想做的。将它绑定到“下载”列表(或任何您的列表代表),并自定义每个项目面板以包含您需要的控件。

+0

该控件位于VisualBasic Power Pack中。我将如何在C#中使用它? – 2008-08-26 10:23:36

+0

@Adam否,它只是在VisualBasic命名空间中。你可以从任何和所有的.NET语言中使用它,它是.NET 3.5 SP1的一部分。 – 2008-08-26 10:24:38

相关问题