我如何有类似的多个面板的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。

我如何有类似的多个面板的GUI出现在我的Windows窗体应用程序

我猜这就是你要找的

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的宽度设置为你添加到的流面板的宽度,并将其设置为左锚和右锚