如何使一个物体相对于另一个物体保持在同一位置

How to make an object stay in the same position relative to another object


问题

我有一个文本框,我想让它保持在相对于图像的同一位置

76353-ezgif-4-180b3dd786a2.gif


它可以工作,但文本框向左移动
76332-ezgif-1-5cef78ae36fb.gif



谢谢你的帮助!

把有帮助的答案(显然是有WM_SIZING的那个)标记为 "正确答案",以帮助将来找到这个主题的读者。

答案1

其中一个方法是用 FlowLayoutPanel

A测试,
Anchor : Bottom, Right

Margin 50; 50; 为TextBox
=>

76246-flowlayoutpanel.gif


答案2

你也可以覆盖 WM_SIZING .
随机测试 =>

 private void MoveSize()
 {
     // Resize/Move controls as you want        
     pictureBox1.Left = (this.ClientSize.Width - pictureBox1.Width) / 2;
     pictureBox1.Top = (this.ClientSize.Height - pictureBox1.Height) / 2;
     // textBox1 relative to pictureBox1
     textBox1.Left = pictureBox1.Left + 100;
     textBox1.Top = pictureBox1.Bottom + 20;
 }

 public const int WM_SIZING = 0x0214;

 protected override void WndProc(ref Message m)
 {
     base.WndProc(ref m);
     if (m.Msg == WM_SIZING)
     {
         MoveSize();
         m.Result = (IntPtr)1;
     }
 }