2013-10-31 61 views
0

我有一個用戶控件的大小爲25x25,我想將它複製到三個單獨的10x10網格中,我可以更改我的窗體上的位置。 我正在進行大流行模擬,所以三個網格代表三個國家,我將根據網格廣場的感染狀態更改用戶控件的顏色。在VB.NET中繪製三個網格的用戶控件

我一直在玩這個很長一段時間,但我不能得到它的工作,當我使用Me.Controls.Add(UserControl)它覆蓋前一個,我剩下只有一個用戶控件在窗體上。

任何幫助表示讚賞,謝謝。

+0

當您添加他們總是出現在完全相同的位置控制,所以它看起來好像第二CONTRO還沒有已被添加。添加控件時,請設置控件的頂部和/或左側屬性。 – peterG

+0

你是否在運行時正確地創建了網格?......你需要像'Dim uc As New UserControl'一樣的東西,設置屬性(參見上面的peterG的註釋),後面跟着'Me.Controls.Add(uc )' –

+1

您是否考慮過在用戶控件上放置一個TableLayoutPanel,然後將您的子控件放入TableLayoutPanel的不同部分? – Roger

回答

0

下面是一個將創建網格的方法,您可以將任意控件放入此「網格」的「單元格」中。 要運行此操作,請將此代碼粘貼到任何按鈕處理程序中,並且它將完成所需的所有操作。 我不知道這是否是確切的解決方案,但您可能會從中得到一些東西。如果你可以在不同的狀態下對你的屏幕進行模擬,那將會很有幫助,所以我們知道你真正想要什麼。

上的一些按鈕處理程序調用方法DoAGrid

DoAGrid(bool.Parse(_txtTest.Text)); // type true or false in txt 

的methos

private void DoAGrid(bool isTest) 
{ 

     const int size = 30; // I give 2 for controll padding 
     const int padding = 20; // x and y starting padding 
     Point[,] grid = new Point[10,10]; // x and y of each control 


     List<Control> btns = null; 
     if (isTest) btns = new List<Control>(100); 

     for (int x = 1; x < 11; x++) 
     { 
      for (int y = 1; y < 11; y++) 
      { 
       grid[x - 1, y - 1] = new Point(padding + x*size - 30 - 1, padding + y*size - 30 - 1); // 30 - 1 --> size + 2 
       if (isTest) 
       { // this test will add all avail buttons so you can see how grid is formed 
        Button b = new Button(); 
        b.Size = new Size(size, size); 
        b.Text = "B"; 
        b.Location = grid[x - 1, y - 1]; 
        btns.Add(b); 
       } 

      } 
     } 

     Form f = new Form(); 
     f.Size = new Size(1000, 1000); 

     if (isTest) 
     { 
      f.Controls.AddRange(btns.ToArray()); 
     } 
     else 
     { 
      // Add controls to random grid cells 
      Button b1 = new Button(); 
      b1.Size = new Size(size, size); 
      b1.Text = "B1"; 
      b1.Location = grid[3, 3]; 
      Button b2 = new Button(); 
      b2.Size = new Size(size, size); 
      b2.Text = "B2"; 
      b2.Location = grid[5, 5]; 
      Button b3 = new Button(); 
      b3.Size = new Size(size, size); 
      b3.Text = "B3"; 
      b3.Location = grid[8, 8]; 
      Button b4 = new Button(); 
      b4.Size = new Size(size, size); 
      b4.Text = "B4"; 
      b4.Location = grid[8, 9]; 
      Button b5 = new Button(); 
      b5.Size = new Size(size, size); 
      b5.Text = "B5"; 
      b5.Location = grid[9, 8]; 
      Button b6 = new Button(); 
      b6.Size = new Size(size, size); 
      b6.Text = "B6"; 
      b6.Location = grid[9, 9]; 
      f.Controls.AddRange(new Button[] { b1, b2, b3, b4, b5, b6 }); 
     } 

     f.ShowDialog(); 

    }