4面すべてのフォームに固定されたテキストボックスが正しく表示されない
-
11-07-2019 - |
質問
テキストボックスを4面すべてのフォームに固定しようとすると、問題が発生します。テキストボックスをフォームに追加し、MultilineプロパティをTrueに設定し、AnchorプロパティをLeft、Right、Up、およびDownに設定して、実行時にテキストボックスがフォームとともに拡大および縮小するようにしました。また、テキストボックスの上下に他のコントロールがいくつかあります。
アンカーはVisual Studio 2005で正しく機能します(つまり、フォームのサイズを変更し、コントロールを期待どおりに拡大および縮小できます)が、プロジェクトを実行すると、テキストボックスの下部がフォームの下部まで拡張されます。通常、その下に表示される他のコントロールの背後。この問題は、サイズ変更が試行される前にフォームがロードされるときに発生します。テキストボックスのアンカーは、上部、左側、右側で正しいです。底部のみが故障しています。
これを聞いた人はいますか?もしそうなら、解決策を見つけることができましたか?
ありがとう!
更新:
Greg Dのリクエストによるデザイナーコードの一部を次に示します(他のコントロールではなく、テキストボックス自体に関係するもののみを含めています):
Friend WithEvents txtRecommendationText1 As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.txtRecommendationText1 = New System.Windows.Forms.TextBox
' ...snip...
'txtRecommendationText1
Me.txtRecommendationText1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.txtRecommendationText1.Location = New System.Drawing.Point(4, 127)
Me.txtRecommendationText1.Multiline = True
Me.txtRecommendationText1.Name = "txtRecommendationText1"
Me.txtRecommendationText1.Size = New System.Drawing.Size(223, 149)
Me.txtRecommendationText1.TabIndex = 10
End Sub
別の更新:
最初に投稿したテキストボックスは、ベースクラスフォームから継承されませんでした(カスタムユーザーコントロールクラスに追加されましたが、おそらく以前に言及したはずです)が、最近、まったく無関係なセットで同じ問題に遭遇しましたベースクラスフォームから継承されたコントロールの。これらの問題は、.NETフレームワークで発生する可能性のあるバグのせいにするのは簡単ですが、実際にはそのように見え始めています。
解決 3
最初に投稿したテキストボックスは、ベースクラスフォームから継承されませんでした(カスタムユーザーコントロールクラスに追加されましたが、おそらく以前に言及したはずです)が、最近、まったく無関係なセットで同じ問題に遭遇しましたベースクラスフォームから継承されたコントロールの。これらの問題は、.NETフレームワークで発生する可能性のあるバグのせいにするのは簡単ですが、実際にはそのように見え始めています。
他のヒント
Form
はローカライズされていますか? Textbox.Size
を使用してエントリのリソースファイルを確認し、削除してサイズをリセットします。
あなたの Form
は継承され、ベースフォーム上の Textbox
ですか? Textbox
のアクセス修飾子をProtectedまたはPublicに設定してみてください。
カスタムサイズ変更ロジックを実装しましたか?オフにして、問題がまだあるかどうかを確認します。
Textbox.MinimumSize
/ MaximumSize
を入力しましたか?値を削除または変更します。
これらの組み合わせでもあるかもしれません...
奇妙に初期化された後にサイズを変更すると、フォームは期待されるレイアウトに戻りますか?また、テキストボックスにHeightまたはMinimumHeight / MaximumHeightプロパティを設定しましたか?
可能であれば、デザイナーコードのいくつかのスニペットが役に立つかもしれません。 :)
過去に私が遭遇した可能性の1つは、DPIです。開発しているマシンとは異なるDPI設定のマシンでコードを実行/テストしている場合、奇妙なことが起こる可能性があります。
アンカー機能は、基本的に、コントロールの端とコントロールの親の端の間の固定距離を確立します。アンカーが適切に設定されていない別のコントロール(パネルなど)にテキストボックスが埋め込まれていますか?デザイナーでテキストボックスを右クリックすると、その下に存在するコントロールを選択できるメニューがポップアップします。
プログラムにカスタムのサイズ変更ロジックが含まれていますか、デザイナーが生成したコードの外側でプログラムによってテキストボックスのサイズを変更しますか?また、奇妙な動作を引き起こす可能性があります。私の組織では、元の開発者が(バギー)サイズ変更ロジックの実装に多大な時間を費やし、デザイナーが生成したコードで実行できるようにするために、取り壊さなければならない多くのソフトウェアのメンテナンスを想定しました私のために働きます。
InitializeComponent()で 'AutoScaleMode'プロパティが設定されているためです。 「なし」に設定してみて、修正されるかどうかを確認してください。これらの問題は数回発生しました。