我应该使用哪种控件在c#winforms中构建这样的用户界面?

时间:2014-04-18 09:30:52

标签: c# winforms

一行中的项目数应该是灵活的。即,我应该能够在运行时根据显示器大小设置它。信息应来自数据库。

我应该使用listview吗?怎么样?

User Interface

3 个答案:

答案 0 :(得分:2)

我会使用TableLayoutPanel自动排列图块。

对于tile,我会创建一个UserControl并在Paint处理程序中绘制我想要的布局。网页搜索可以轻松找到绘制圆角矩形所需的代码,绘制图像和几行文字非常简单。

通过使用UserControl,您可以完全控制它的外观,并且比使用嵌套的PictureBox和Label控件更有效。

一种替代但稍微复杂的解决方案是使用ListView和所有者绘制项目。

答案 1 :(得分:1)

嗯,我说我们来到这里:

  • 某种"包装面板"水平放置物品,"溢出"到下一行
  • 查看单个项目的自定义控件

该自定义控件具有恒定的宽度 - 高度(请注意,文本数据具有省略号" ..." - 它不会强制项目增长,因此边界是常量)并且包括:

  • item-title:带有text-ellipsis的标签
  • item-details:带有text-elipsis的三个标签
  • title-backround:带圆角矩形的边框
  • item-background:带圆角矩形的边框

我记得在Winforms中有一些包装面板,它可能是FlowLayoutPanel,但如果你不喜欢它,你应该能够在互联网上找到其他一些实现。这很常见。

我也认为"带圆角的边界"在简单的WinForms中不存在,但你可以轻松编写自己的,见this question

编辑:如果您不想手动处理FlowPanel中的添加/删除项目,这里是BindableFlowLayout的示例 - 但请务必阅读评论。你必须probalby适应它一点来绘制你的项目控件。实际上,这应该是非常方便的方法。

EDIT2:我不记得强迫ListView显示你的UserControls等的任何其他方式。如果你真的想要ListView,那么你可能需要手动绘制所有项目。 Here's an example of custom-drawn items - 他们在一个示例中绘制了一个平铺的照片列表 - "只是"添加到您的自定义绘图。但实际上这可能不是一件容易的事。

EDIT3:我想补充的最后一件事是你可以在旧版应用中使用WPF 。有特殊的"托管控件"允许您在WPF窗口内的WinForms窗口和WinForms视图中嵌入WPF视图。其中一个是ElementHost(这是一个WinForms控件),你可以在其中放置一个WPF控件(或整个视图)。唯一的要求是实际的底层Windows版本和已安装的.Net框架必须足够新,才能知道WPF。 Here's a nice tutorial解释了基础知识,并展示了如何在WinForms窗口中放置WPF-y列表。

答案 2 :(得分:0)

我不确定如何给出圆角效果。否则,您可以使用

等属性创建用户控件
class userControl:UserControl
{
public string Name{get;set;}
public string Desc{get;set;}
public string Price{get;set;}
}

将这些属性绑定到User Control中的必需标签。 然后根据集合中的no记录创建N个控件,并将它们的属性绑定到它。