2010-01-15 28 views
1

我目前在Windows窗體上有一個文本框,我需要在文本框的右側動態添加一個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等沒有運氣的屬性。所有這些屬性都會返回控件的原始寬度,而不考慮由於Anchor屬性而改變的寬度。

有誰知道我可以如何確定文本框的實際大小?謝謝

回答

2

Width屬性總是跟蹤控件的當前寬度,無論它是否被錨定。但是,當您使容器變大並且會使其與PictureBox重疊時,TextBox將會增長。您也必須將PB固定在右側。

+0

nobugz,我不認爲錨定PB是正確的方法,因爲這將增加其寬度,而不是移動pb的起點。我只需要找到一種方法來添加PB,直到文本框展開爲止 – GR7 2010-01-15 23:16:56

+0

不,它只在雙方都錨定時才增加寬度。只錨到右邊。 – 2010-01-15 23:22:28

+0

你是對的!把PB固定在右邊就可以實現。非常感謝你。 – GR7 2010-01-15 23:57:16

0

這些應該返回調整大小。無論您是指錯誤的文本框,還是在大小實際更改之前執行查詢。

+0

我認爲你是對的約翰......這很奇怪,因爲我認爲控件在表單顯示之前展開(當我打開新表單時,我的程序已經最大化),但它看起來是我的在擴展文本框之前發生添加控件的過程。 有關如何在控件錨定後發生的任何想法? – GR7 2010-01-15 23:15:25

+0

如果您訂閱了SizeChanged通知,那應該足夠晚了。 – 2010-01-15 23:19:06

+0

嘿約翰。 nobugz的解決方案奏效,但我對你提出的方法感到好奇(爲了學習)。您是否意味着在文本框的SizeChanged事件中重繪或重新定位圖片框? – GR7 2010-01-15 23:58:20