2014-12-06 36 views
-1

我正在創建一個聊天程序,對於chatbox,我希望那裏有一個whatsapp類型的樣式消息佈局。我這樣做的方式(可能不是最好的)是通過動態創建一個圖片框和我的藍色背景圖片,然後添加一個標籤,使圖片框成爲父圖片,然後在圖片框上疊加消息。我使用這段代碼:動態標籤父母不能正常工作

private void CreateChatBox(int height, string message) 
    { 
     PictureBox pb = new PictureBox(); 
     Label pbl = new Label(); 
     pb.Name = height.ToString(); 
     pbl.Text = message; 
     pbl.Name = height.ToString(); 
     pb.Image = LocalChat.Properties.Resources.ChatBox_Test; 
     pb.SizeMode = PictureBoxSizeMode.StretchImage; 

     // set picturebox possitions and margins 
     pb.Left = 15; 
     pb.Top = 100; 
     pb.Width = 250; 
     pb.Height = 75; 
     tabPage.Controls.Add(pb); 

     //set label positions and margins 
     pbl.Parent = pb; 
     pbl.AutoSize = true; 
     pbl.Width = 200; 
     pbl.BackColor = Color.Transparent; 
     pbl.Location = new Point(1, 1); 
     // Add button click event Handler and add buttons and lables to the panel 

     tabPage.Controls.Add(pbl); 
    } 

我的問題是,我做的圖片框的標籤的父,但標籤將只是坐在形式的非常左上角,而不是裏面的我想要的picturebox。我沒有得到什麼家長應該做的? 或我如何讓我的標籤被限制在圖畫框內?

+0

@GrantWinney哦,我的壞我改變了代碼,看看它是否是動態創建的picturebox,這是我的問題會編輯它。 – BornToGrill 2014-12-06 15:39:45

回答

0

您必須在文件 的結尾處,刪除你的代碼

tabPage.Controls.Add(pbl); 

行,因爲你設置的標籤在PictureBox你其父設置爲的TabPage的父之後,再次 當你使用anyControl.Controls.Add(otherControl)你將anyControl.Parent設置爲anyControl

但是我會說,如果你想要這種控制設置,你應該而不是動態地創建和設置它的控制,你可以創建一個用戶控件,並在用戶控件內部放置日誌ic的消息顯示,你可以dinamically創建userControl並把它放在任何你想要的地方