none
TextBoxのAutoSize? RRS feed

  • 質問

  • フォームにTextBoxを貼り付け、サイズを変更しようとしたら・・・

    横幅は変更できますが、高さ方向が出来ません。

    .Multilineをtureにすれば高さ方向も変更できますが、他のコントロールのようにAutoSizeは無いのでしょうか?

     

    それとも、エディションの問題でしょうか?

    2008年3月12日 3:56

回答

  • まどかさん、ありがとうございます

    そして、ダッチさんへ。

     

    大した意味がなかったんですが、Fontサイズに合わせた高さよりも、より余白?部分を作りたかったのです。

    (入力は、Multilineではありません)

    .NETを横目で見ながら、VB6を使い続けていまして、そろそろ2008かなぁと・・・

    これからもよろしくお願いします

    2008年3月13日 23:21

すべての返信

  • まず、AutoSizeはControl.AutoSizeです。確認まで。

     

    AutoSizeは中身(Text)にあわせて自動リサイズするかというプロパティですが

    たとえば、Labelはすべてを表示するの意味を含んでいます。

    しかし、TextBoxはすべて表示する必要性が無いという概念なので、AutoSizeが不要なわけです。

    #ただ基底Controlクラスプロパティなので、TextBoxではプロパティウィンドウやコードエディタでは見えない属性になっています。

    #かつ既定値=Trueです。

     

    というわけで、コードでAutoSizeをFalseに設定すれば高さを変更できます。
    また、TextBoxを継承してAutoSize=Falseが既定のコントロールを作る方法もあります。

     

    2008年3月12日 4:33
  • サンプルを書いておきます。

    新規プロジェクトで下記を追加してビルドするとツールボックスに追加されますのでビルドした後でフォームに貼ってください。

     

    Code Snippet

    Imports System.ComponentModel
    Public Class TextBoxEx
        Inherits TextBox
        <EditorBrowsable(EditorBrowsableState.Always), _
         Browsable(True), _
         DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
        Public Overrides Property AutoSize() As Boolean
            Get
                Return MyBase.AutoSize
            End Get
            Set(ByVal value As Boolean)
                MyBase.AutoSize = value
            End Set
        End Property
    End Class

     

     

    2008年3月12日 4:46
  • Flute50 さん、こんにちは

    ダッチです。

     

    TextBox の高さは通常 Font のサイズに合わせて変更されます。

    まどか さんが仰るとおり、隠された AutoSize プロパティが Font のサイズに合わせて TextBox の高さを調整してくれています。

     

    ちょっと気になるのですが、なぜ Multiline は False にした状態のままで高さを変更しようと思ったのでしょうか?

    差し支えなければ教えていただけませんか。

    2008年3月12日 11:25
  • まどかさん、ありがとうございます

    そして、ダッチさんへ。

     

    大した意味がなかったんですが、Fontサイズに合わせた高さよりも、より余白?部分を作りたかったのです。

    (入力は、Multilineではありません)

    .NETを横目で見ながら、VB6を使い続けていまして、そろそろ2008かなぁと・・・

    これからもよろしくお願いします

    2008年3月13日 23:21
  • お答えいただきありがとうございます。

     

    そういった要望があるのかと思って、どういった理由でそういうことがしたいのかが気になってました。

    ただ余白を作りたかっただけなんですね。わかりました。

     

    これからもよろしくお願いします。

    2008年3月14日 3:54