Question

熊テン on Wed, 04 Oct 2017 07:02:35


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

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

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

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

Replies

kenjinote on Wed, 04 Oct 2017 08:04:35


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

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

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


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

Tak1wa on Wed, 04 Oct 2017 22:36:47


こんにちは。

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フォームに配置する

熊テン on Thu, 05 Oct 2017 03:45:28


ご回答していただきありがとうございます。

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

熊テン on Thu, 05 Oct 2017 03:46:22


ご回答していただきありがとうございます。

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