3

テキストボックスをフォームの 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 フレームワークの潜在的なバグのせいにするのは簡単ですが、私にはそのように見え始めています。

4

4 に答える 4

3

Formローカライズされていますか?エントリのリソース ファイルを確認しTextbox.Size、削除してサイズをリセットします。
あなたFormは継承Textboxされており、ベースフォーム上にありますか? Textboxのアクセス修飾子を Protected または Public に設定してみてください。
カスタムのサイズ変更ロジックを実装しましたか? オフにして、問題がまだあるかどうかを確認します。/
を入力しましたか? 値を削除または変更します。Textbox.MinimumSizeMaximumSize

また、これらの組み合わせかもしれません...

于 2008-11-25T20:34:31.683 に答える
2

私が最初に投稿したテキストボックスは、基本クラスのフォームから継承されたものではありませんでした (ただし、カスタム ユーザー コントロール クラスに追加されました。おそらく以前に言及する必要がありました)。基本クラスのフォームから継承されました。これらの問題を .NET フレームワークの潜在的なバグのせいにするのは簡単ですが、私にはそのように見え始めています。

于 2009-01-27T20:07:54.270 に答える
2

フォームが奇妙に初期化された後にサイズを変更すると、フォームは予想されるレイアウトに戻りますか? また、テキスト ボックスの Height または MinimumHeight/MaximumHeight プロパティを設定しましたか?

可能であれば、デザイナー コードからいくつかのスニペットが役立つ場合があります。:)

私が過去に遭遇した 1 つの可能性は DPI です。開発中のマシンとは異なる DPI 設定のマシンでコードを実行/テストしている場合、奇妙な現象が発生することがあります。

アンカー機能は、基本的に、コントロールの端とコントロールの親の端の間に一定の距離を確立します。アンカーが適切に設定されていない別のコントロール (パネルなど) にテキストボックスが埋め込まれていませんか? デザイナーでテキスト ボックスを右クリックすると、その下にあるコントロールを選択できるメニューが表示されます。

プログラムにカスタムのサイズ変更ロジックが含まれていますか? または、デザイナーが生成したコードの外でプログラムによってテキスト ボックスのサイズを変更しますか? また、奇妙な動作が発生する可能性があります。元の開発者が (バグのある) サイズ変更ロジックの実装に多大な時間を費やした私の組織では、いくつかのソフトウェアのメンテナンスを想定していました。私のために働いてください。

于 2008-11-25T20:16:56.570 に答える
2

InitializeComponent() で設定されている 'AutoScaleMode' プロパティが原因である可能性が非常に高いです。「なし」に設定してみて、問題が解決するかどうかを確認してください。私はこれらの問題を数回経験しました。

于 2009-04-22T23:33:31.533 に答える