在面板中显示组项目

时间:2017-04-05 04:12:06

标签: c# winforms

我在显示面板内的项目时遇到问题,这是附加到数据流布局,面板有标签,文本框,按钮,复选框和图像,当我运行程序时,只有图像显示消失,即使我已经设置了面板中的每个控件,面板都是从数据流布局控件内的数据库循环,当我尝试更改面板的大小时,没有任何显示。

我只是希望有人指出正确的方向,感谢任何帮助

谢谢

我所做的远远不够:

foreach ("looped according to the database")
            {
                Panel pan = new Panel();
                PictureBox img = new PictureBox();
                Button btn = new Button();
                Label house = new Label();
                TextBox Street = new TextBox();
                CheckBox check = new CheckBox();

                pan.Location = new Point();
                pan.Size = new System.Drawing.Size();
                MemoryStream ms = new MemoryStream();
                img .Image = Image.FromStream(ms);
                img .Tag = Product.ID;
                img .SizeMode = PictureBoxSizeMode.StretchImage;
                img .Location = new System.Drawing.Point();
                img .Size = new System.Drawing.Size();
                img .TabIndex = 0;
                house .Text = Product.Name;
                house .Location = new System.Drawing.Point();
                house .Size = new System.Drawing.Size();
                house .AutoSize = true;
                house .TabIndex = 1;
                Street.Location = new System.Drawing.Point();
                Street.Size = new System.Drawing.Size();
                Street.TabIndex = 2;
                btn.Text = "info";
                btn.Size = new System.Drawing.Size();
                btn.Location = new System.Drawing.Point();
                btn.ForeColor = Color.Green;
                btn.TabIndex = 2;
                pan.Controls.Add(img);
            pan.Controls.Add(check);
                pan.Controls.Add(House);
                pan .Controls.Add(Street);
                pan.Controls.Add(btn);
                this.ProductsFlowPanel.Controls.Add(pan);


            }
        }

我正在努力实现与此类似的东西; image

2 个答案:

答案 0 :(得分:0)

我发现了一些事情,

您在开始时创建的面板对象将在第10行和第11行重新分配:

Panel pan = new Panel();
...
pan = new Point(); //probably remove this
pan = new System.Drawing.Size(); //and this

此外,所有控件的大小和位置只是空点和大小,例如:

img .Location = new System.Drawing.Point();
img .Size = new System.Drawing.Size();

应该更像这样:

img .Location = new System.Drawing.Point(10,10);
img .Size = new System.Drawing.Size(50,50);

答案 1 :(得分:0)

好的,你的代码中有些东西肯定是错的。我不知道是否会导致问题,但这是你要求的方向。

语法:something x = new something();用于创建something

的对象

此前提条件是something()类应该可以访问。

现在让我们分解something x;< - 这声明somethingx

x = new something()< - 这会向x对象发起something

您在代码中执行的操作是:

    Panel pan = new Panel(); //pan is now an object of `Panel()` class.
    pan = new Point(); //pan is now an object of `Point()` class.
    pan = new System.Drawing.Size(); //pan is now an object of `System.Drawing.Size()` class.

现在,在C#中,接受了最后一个声明。所以基本上,pan不再是Panel类的对象。这意味着你的面板逻辑不会起作用。

我注意到的另一件事是所有控件的大小和位置都只是空点和大小。

应该是这样的:

img .Location = new System.Drawing.Point(50,50);
img .Size = new System.Drawing.Size(100,100);

希望这会有所帮助:)