none
Windowsフォームアプリケーションでwpfのviewboxのような機能を実現する方法 RRS feed

  • 質問

  • お世話になっております。今回Windowsフォームアプリケーション(VB.NET)で使用しているTextboxについて質問させていただきます。

    目指している機能は、textboxに表示している文字をフォームのサイズに合わせて伸縮できるという機能です。できる限り大きく表示することができれば良いです。

    自分で調べた限り、WPFのviewboxであれば、(viewbox.stretch = "uniform")というコードで可能だということがわかりました。Windowsフォームアプリケーションにはviewboxがないのでやり方が分かりません。

    Windowsフォームアプリケーションでも同様の機能の実現は可能でしょうか。

    2017年10月4日 7:02

回答

  • WPF ではコントロールの描画も DirectX エンジンで実現されていますので、Windows フォーム アプリケーションで同じようにコントロールのテキストをスムーズに拡縮するのはかなり難しいと思います。

    スムーズ性を特に求めないのであれば、

    Me.TextBox1.Font = New Font("Arial", fontsize)


    上記のように、ウィンドウサイズ変更時にフォントサイズ(fontsize)を指定してコントロールのフォントを変更していく処理になるかと思います。

    2017年10月4日 8:04
  • こんにちは。

    WindowsフォームでWPFコントロールをホストすることが出来るので、
    WPFのViewBoxとTextBoxを使うことが可能です。

    Dim elementHost = New System.Windows.Forms.Integration.ElementHost()
    elementHost.Dock = DockStyle.Fill
    
    Dim viewBox = New System.Windows.Controls.Viewbox()
    viewBox.Stretch = Windows.Media.Stretch.Uniform
    
    Dim innerTextBox = New System.Windows.Controls.TextBox()
    
    viewBox.Child = innerTextBox
    elementHost.Child = viewBox
    Controls.Add(elementHost)
    WPFコントロールをWindowsフォームに配置する

    2017年10月4日 22:36
    モデレータ

すべての返信

  • WPF ではコントロールの描画も DirectX エンジンで実現されていますので、Windows フォーム アプリケーションで同じようにコントロールのテキストをスムーズに拡縮するのはかなり難しいと思います。

    スムーズ性を特に求めないのであれば、

    Me.TextBox1.Font = New Font("Arial", fontsize)


    上記のように、ウィンドウサイズ変更時にフォントサイズ(fontsize)を指定してコントロールのフォントを変更していく処理になるかと思います。

    2017年10月4日 8:04
  • こんにちは。

    WindowsフォームでWPFコントロールをホストすることが出来るので、
    WPFのViewBoxとTextBoxを使うことが可能です。

    Dim elementHost = New System.Windows.Forms.Integration.ElementHost()
    elementHost.Dock = DockStyle.Fill
    
    Dim viewBox = New System.Windows.Controls.Viewbox()
    viewBox.Stretch = Windows.Media.Stretch.Uniform
    
    Dim innerTextBox = New System.Windows.Controls.TextBox()
    
    viewBox.Child = innerTextBox
    elementHost.Child = viewBox
    Controls.Add(elementHost)
    WPFコントロールをWindowsフォームに配置する

    2017年10月4日 22:36
    モデレータ
  • ご回答していただきありがとうございます。

    その方法で再度試行してみます。ありがとうございました。

    2017年10月5日 3:45
  • ご回答していただきありがとうございます。

    貼っていただいたコードとリンクを基に試行します。ありがとうございました。

    2017年10月5日 3:46