2017-04-05 69 views
0

我在面板中显示项目时出现问题,即附加到数据流布局,面板具有标签,文本框,按钮,复选框和图像,但是当我运行程序时,只有图像消失,尽管我已经在面板中设置了每个控件的位置,并且面板从数据流布局控件的数据库中循环,当我尝试更改面板的大小时不显示。在面板中显示组项目

我只是希望有人能指向正确的方向,任何帮助表示赞赏

谢谢

我做了什么做的远:

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

+0

行'泛=新的点();'甚至不会编译,因为'pan'已经被声明为变量输入'Panel' – Fabio

+0

这是我创建表单时的参考,可以请看看https://msdn.microsoft.com/en-us/library/system.windows.forms.panel(v=vs.110) .aspx#示例 – SSSS

+0

Line'Panel pan = new Panel();' - 创建'Panel'类型的实例。你的命令'pan = new Point();'会尝试将'Point'的新实例设置为'pan' - 这在C#中是不可能的,因为'pan'已经被声明为'Panel'的类型。显然你试图写'pan.Location = new Point()' – Fabio

回答

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); 
0

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

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

对象这样做的前提是,something()类应该是可到达的。

现在,让我们打破这something x; < - 此声明something作为x

x = new something() < - 这引发xsomething对象。

你在做什么在你的代码是:现在

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); 

希望这有助于:)

+0

好吧,非常感谢您花时间回答我的问题,但我想改变锅的位置使用点,也改变大小,从我的研究中,我发现这是做到这一点的方式,但是你知道我可以在不使用上面的代码的情况下更改大小和位置吗? – SSSS

+0

@SSSS我并没有完全明白你需要做什么。 –

+0

pan = new Point(); pan = new System.Drawing.Size();我想改变的大小知道除了这些以外的任何方式来做到这一点?我搜索,但找不到任何东西 – SSSS