我如何有类似的多个面板的GUI出现在我的Windows窗体应用程序
本文关键字:GUI 我的 应用程序 窗体 Windows | 更新日期: 2023-09-27 18:13:01
我有一个c# windows窗体应用程序,它具有与MSN类似的GUI功能。它的工作方式是这样的,只有一个通知窗口出现,如果有通知,在这种情况下,我把几个按钮和其他东西在一个面板。(这是正确的方法吗?)
我如何编写它,以便我可以使用arrayList来添加类似的面板到列表中,并使用for循环来调用它。示例将通过使用arraylist(?)调用2或3个类似的面板,并使它们显示在另一个面板的下面。(也许就像MSN的通知窗口一个接一个地出现。)
面板的代码是 this.panel1.Controls.Add(this.button1);
this.panel1.Controls.Add(this.lblImage);
this.panel1.Controls.Add(this.lblName);
this.panel1.Controls.Add(this.lblLinkName);
this.panel1.Controls.Add(this.lblLinkLocation);
this.panel1.Controls.Add(this.lblLocation);
this.panel1.Location = new System.Drawing.Point(13, 134);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(506, 100);
this.panel1.TabIndex = 17;
我必须在设计器文件或编码文件中编写for循环吗?因为在我尝试在设计器代码文件中添加for循环之后,设计器视图无法显示我的UI。
我猜这就是你要找的
for(int i = 0; i < panels.length; i++){
AddPanel(panels[i], i);
}
AddPanel(System.Drawing.Point point, int tabIndex){
Panel panel = new Panel();
this.Add(panel);
panel.Controls.Add(new Button());
panel.Controls.Add(new Label("Image"));
panel.Controls.Add(new Label("Name"));
panel.Controls.Add(new Label("linkName"));
panel.Controls.Add(new Label("linkLocation"));
panel.Controls.Add(new Label("location"));
panel.Location = point;
panel.Name = "panel" + i.ToString();
panel.Size = new System.Drawing.Size(506, 100);
panel.TabIndex = tabIndex;
}
你需要用你想要添加的面板的点填充面板数组
我将创建一个自定义控件,其中包含每个项目所需的界面。让控件公开属性、方法和事件,使您能够以固定的方式访问子控件。
您可以创建自定义控件的多个实例,并将它们添加到List中,并将事件处理程序附加到它们,等等…
如果您使用流布局面板作为父面板,并将每个自定义控件实例添加到其中,它将自动为您处理布局,而无需手动定位它们。如果流布局是在一个设置了自动滚动的容器中,你就会有一个很好的滚动列表,你可以想象任何类型的项目。
添加示例使用名为listtitem的自定义控件。
ListItem item = new ListItem();
someFlowPanel.controls.add(item);
你可能应该将item的宽度设置为你添加到的流面板的宽度,并将其设置为左锚和右锚