2014-12-06 51 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并把它放在任何你想要的地方