C# 在Windows.Forms中创建控件列表
我已经决定,我希望有一个具有复杂上下文的列表,即自定义控件的列表。目标是看起来像好友列表的东西,带有照片、状态图标、文本和开始聊天按钮 但我喜欢它表现为一个列表:滚动条,可以选择多个项目,等等 当我查看ListView和ListBox时,我只看到我可以添加文本和图标,但不能添加任意控件。我想知道这是怎么做到的C# 在Windows.Forms中创建控件列表,c#,winforms,C#,Winforms,我已经决定,我希望有一个具有复杂上下文的列表,即自定义控件的列表。目标是看起来像好友列表的东西,带有照片、状态图标、文本和开始聊天按钮 但我喜欢它表现为一个列表:滚动条,可以选择多个项目,等等 当我查看ListView和ListBox时,我只看到我可以添加文本和图标,但不能添加任意控件。我想知道这是怎么做到的 或者我应该使用ListView/ListBox以外的东西吗?Visual Basic电源包中有一个名为的控件 这允许您将自己的控件与成为中继器中项目的数据容器相关联 我以前用过一次,我相信
或者我应该使用ListView/ListBox以外的东西吗?Visual Basic电源包中有一个名为的控件 这允许您将自己的控件与成为中继器中项目的数据容器相关联 我以前用过一次,我相信它不完全是直观的,但一旦你有了头脑,它就会相当有用。它还节省了您自己的控制
这是目前为止我发现的最接近于在Windows窗体中创建任意重复控件的想法。在Windows窗体中创建此控件非常简单,而在Windows窗体中需要大量工作—WPF旨在创建如此丰富的UI控件。如果应用程序的其余部分是Windows窗体,则您可以使用FlowLayoutPanel作为主机。使用FlowLayoutPanel。如果希望控件垂直排列并滚动,请执行以下操作:
myFlowLayoutPanel.AutoScroll = true;
myFlowLayoutPanel.FlowDirection = FlowDirection.TopDown;
myFlowLayoutPanel.WrapContents = false; // Vertical rather than horizontal scrolling
foreach(Control myControl in myControls){
myFlowLayoutPanel.Controls.Add(myControl);
}
确保面板足够大,可以容纳控件和滚动条。我不确定您的选择要求。为什么不试试WPF而不是Winforms?@Dean Chalk:我正在向现有应用程序添加一项功能。更不用说,如果你还没有任何WPF方面的经验,那么尝试WPF将导致一个陡峭的学习曲线。至少学习WPF的基础知识只会让C开发人员在将来受益,因为微软将大量精力放在它上面。此外,OP试图做的只是简单地使用XAML和数据绑定,这在所有WPF教程的第一章中都有介绍。@CommanderZ假设OP想要实现的就是本文中所写的内容。在WinForms中,这也很简单,在VisualBasic电源包中有一个可用于执行此操作的控件,称为Data Repeater。然而,我同意WinForms从无到有并不是一件小事。并非所有事情都是XY问题。有时OP需要使用一个系统而不是另一个系统是有原因的。