2017-04-05 67 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