C# 如何根据之前从代码创建的面板的位置创建面板?
C# How can I create a panel according the location of the previous panel created from code?
下面一张照片的示例。我想为我数据库中的每个人创建一个面板,每个面板都包含有关该人的信息。我的疑问不是如何制作,而是如何根据前一个的位置添加一个?例如在线购物车
最简单的方法是创建一个 FlowLayoutPanel
并向其中添加项目,流式布局面板将负责它们的定位。只需设置其自动滚动:
flowLayoutPanel1.AutoScroll = true;
和流向:
flowLayoutPanel1.FlowDirection=FlowDirection.TopDown;
您可以 google 关于 flowlayout 面板并找到许多示例,this is one of them。
第二个选项是在彼此下方添加面板并向带有停靠栏(左侧或右侧)的表单添加 VertialScrollBar
,然后您应该自己处理滚动。
至于将每个面板添加到之前的面板下方(第一种方式不需要,因为 flowlayoutpanel 会处理它)
假设您的面板位于名为 panels
的数组中
for(int i=0;i<panels.Length;i++)
{
int top = i == 0 ? 0 : panels[i - 1].Top + panels[i - 1].Width; //this line not needed in flowlayout panel
panels[i].Location = new Point(0, top);//this line not needed in flowlayout panel
Parent.Controls.Add(panels[i]); //parent can be your form, a panel, ...
}
如果是我,首先我会创建一个 UserControl
来表示一个项目,然后为了列出它,我会使用 Panel
和 AutoScroll
以及 TableLayoutPanel
在其中(AutoSize 设置为 true,1 列和 1 行)。
像这样,您只需将控件(您将使用您创建的 UserControl
)添加到 TableLayoutPanel
。
下面一张照片的示例。我想为我数据库中的每个人创建一个面板,每个面板都包含有关该人的信息。我的疑问不是如何制作,而是如何根据前一个的位置添加一个?例如在线购物车
最简单的方法是创建一个 FlowLayoutPanel
并向其中添加项目,流式布局面板将负责它们的定位。只需设置其自动滚动:
flowLayoutPanel1.AutoScroll = true;
和流向:
flowLayoutPanel1.FlowDirection=FlowDirection.TopDown;
您可以 google 关于 flowlayout 面板并找到许多示例,this is one of them。
第二个选项是在彼此下方添加面板并向带有停靠栏(左侧或右侧)的表单添加 VertialScrollBar
,然后您应该自己处理滚动。
至于将每个面板添加到之前的面板下方(第一种方式不需要,因为 flowlayoutpanel 会处理它)
假设您的面板位于名为 panels
for(int i=0;i<panels.Length;i++)
{
int top = i == 0 ? 0 : panels[i - 1].Top + panels[i - 1].Width; //this line not needed in flowlayout panel
panels[i].Location = new Point(0, top);//this line not needed in flowlayout panel
Parent.Controls.Add(panels[i]); //parent can be your form, a panel, ...
}
如果是我,首先我会创建一个 UserControl
来表示一个项目,然后为了列出它,我会使用 Panel
和 AutoScroll
以及 TableLayoutPanel
在其中(AutoSize 设置为 true,1 列和 1 行)。
像这样,您只需将控件(您将使用您创建的 UserControl
)添加到 TableLayoutPanel
。