Winforms 如何确定windows窗体控件的宽度,该控件的宽度因其被锚定而增加?

Winforms 如何确定windows窗体控件的宽度,该控件的宽度因其被锚定而增加?,winforms,Winforms,我目前在Windows窗体上有一个文本框,我需要在文本框的右侧动态添加一个PictureBox控件 我以编程方式创建PictureBox,在设置PictureBox的位置时,我的设置如下: pBox.Location=新点(tbControl.Location.X+ctrl.Width,ctrl.Location.Y) 所以我将图片框设置为位于文本框的X位置加上文本框的宽度。但是,由于文本框的“定位”属性设置为“右”,因此其宽度会增加,以填充文本框本身与表单边框之间的空间 问题是,即使文本框的宽

我目前在Windows窗体上有一个文本框,我需要在文本框的右侧动态添加一个PictureBox控件

我以编程方式创建PictureBox,在设置PictureBox的位置时,我的设置如下:

pBox.Location=新点(tbControl.Location.X+ctrl.Width,ctrl.Location.Y)

所以我将图片框设置为位于文本框的X位置加上文本框的宽度。但是,由于文本框的“定位”属性设置为“右”,因此其宽度会增加,以填充文本框本身与表单边框之间的空间

问题是,即使文本框的宽度在视觉上大于textbox.width的实际值。Width属性未考虑被锚定的额外宽度

我已经尝试了Textbox.Bounds.Width、Textbox.ClientSize.Width、Textbox.DisplayRectangle.Width等属性,但没有成功。所有这些属性都返回控件的原始宽度,而不考虑由于锚属性而调整大小的宽度


有人知道我如何确定文本框的实际大小吗?谢谢

这些应该返回调整后的尺寸。要么您引用了错误的文本框,要么您在实际更改大小之前进行了查询

Width属性始终跟踪控件的当前宽度,无论该控件是否被锚定。但是,当您将容器变大时,文本框将增长,这将使其与PictureBox重叠。您还必须将PB定位到右侧。

我认为您是对的John…这很奇怪,因为我认为控件在窗体显示之前已展开(当我打开新窗体时,我的程序已最大化),但我添加控件的过程似乎是在文本框展开之前进行的。如果你订阅SizeChanged通知,那就应该足够晚了。嘿,John。nobugz的解决方案奏效了,但我对你建议的方法很好奇(为了学习)。您的意思是在文本框的SizeChanged事件中重新绘制或重新定位picturebox吗?我的意思是等待文本框上的SizeChanged通知,然后再询问其宽度。但是nobugz的建议是一个更好的解决方案。nobugz,我不认为锚定PB是正确的方法,因为那样会增加PB的宽度,而不是移动PB的起点。我只需要找到一种方法来添加PBs,直到文本框被扩展。不,如果它在两侧锚定,它只会增加宽度。只有靠右的锚。你是对的,诺布兹!将PB锚定到右侧就成功了。非常感谢。这就是为什么我爱你。