[C#][WPF] NumericUpDownコントロール (WindowsFormsHostを使用して。)

概要

WPFにはNumericUpDownは無いので、WindowsFormsHostを利用してFormアプリのコントロールを使用する。

以下を参照追加します。
・System.Windows.Forms
・WindowsFormsIntegration

XAMLにNamespaceを追加します。
xmlns:wfc=”clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms”
(“wfc”)の表記は任意の文字で可能です。

ツールボックスから「WindowsFormsHost」をドラッグするか、XAMLに手打ちでWindowsFormsHostのタグを入力します。

WindowsFormsHostタグの子階層でFormアプリのコントロールを呼び出します。

コード

XAML

ポイント

windowsFormsHostの利用

WindowsFormsHostを利用してFormアプリのコントロールを使用します。
以下の参照を追加します。
・System.Windows.Forms
・WindowsFormsIntegration

参照の追加は
[プロジェクト]>[参照の追加]をクリックします。

開いた「参照マネージャ」ウィンドウの右上の検索ボックスに、「forms」と入力して検索。
検索結果から
「System.Windows.Forms」
「WindowsFormsIntegration」
にチェックし、[OK]ボタンをクリックします。

XAMLにネームスペース追加。

XAML 6行目:
XAMLのWindowタグに
xmlns:wfc=”clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms”
を追記して、参照するネームスペースを追加します。
(“wfc”)の表記は任意の文字で可能です。

XAMLを記述した結果は以下の通りです。

実行結果は以下の通りです。

NumericUpDownとWindowsFormsHostのサイズ指定の関係は次の通りです。
[1]
WindowsFormsHost: Width, Height 指定する
NumericUpDown:Width, Height 指定する
サイズ: WindowsFormsHost < NumericUpDown
⇒ コントロールのサイズはWindowsFormsHostに依存。

[2]
WindowsFormsHost:Width, Height 指定しない
NumericUpDownはWidth, Height:指定する
⇒ コントロールのサイズはどちらにも影響を受けない(?)

[3]
WindowsFormsHost:Width, Height 指定する
NumericUpDownはWidth, Height:指定する
サイズ: WindowsFormsHost > NumericUpDown
⇒ コントロールのサイズはWindowsFormsHostに依存。

[4]
WindowsFormsHost:Width, Height 指定する
NumericUpDownはWidth, Height:指定する
サイズ: WindowsFormsHost > NumericUpDown
⇒ コントロールのサイズはWindowsFormsHostに依存。

ツールボックスから「WindowsFormsHost」をドラッグするか、XAMLに手打ちでWindowsFormsHostのタグを入力します。

WindowsFormsHostタグの子供にFormアプリのコントロールを呼び出します。

以下を参照追加は
・System.Windows.Forms
・WindowsFormsIntegration

XAMLにNamespaceを追加
xmlns:wfc=”clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms”
(“wfc”)の表記は任意の文字で可能。

ツールボックスから「WindowsFormsHost」をドラッグするか、XAMLに手打ちでWindowsFormsHostのタグを入力。

WindowsFormsHostタグの子階層でFormアプリのコントロールを呼び出す。

参考

[] 【WPF】なるほど!WindowsFormsHostでWindowsFormのコントロールを使う! | 趣味や仕事に役立つ初心者DIYプログラミング入門

【WPF】なるほど!WindowsFormsHostでWindowsFormのコントロールを使う! | 初学者DIYプログラミング入門
WPFになってから、UIレイアウトの自由度が高まりましたが、それでもWindowsForm時代のコンポーネントを使いたくなることがあります。 例えば、グラフを表示するチャートコントロールがWPFで標準搭載されていないとか、WindowsFo

[] WPF で NumericUpDown コントロールを使う その1 [C#編] – Getting a Good Grasp of F# (仮)

WPF で NumericUpDown コントロールを使う その1 [C#編] - Getting a Good Grasp of F# (仮)
WPF には Spin コントロールがありません。一方で、WinForms には Spin コントロールとしての機能を持つ NumericUpDown クラス が存在します。C# で WPF の Window 上にこの NumericUpDown コントロールを配置してみます。このとき WPF に WinForms コ...

コントロールを自作する参考

[] WPFでもNumericUpDownが使いたい、簡単に作りたい – 午後わてんのブログ

WPFでもNumericUpDownが使いたい、簡単に作りたい - 午後わてんのブログ
追記 簡単じゃないのはこっち WPFにもNumericUpDownみたいなのをユーザーコントロールで、その9、不具合修正 - 午後わてんのブログ 追記ここまで WindowsFormアプリのNumericUpDownコントロール 水色の丸のところがそれ 便利だからこんなふうにたくさん使っていたのに WPFにはない! の...

他、WindowsFormsHostを使用するときの注意点等の参考

[] WindowsFormsHostを使用したときの描画問題 – Yamakiの日記

WindowsFormsHostを使用したときの描画問題 - Yamakiの日記
WPF4でWindowsFormsHostを使用した場合、下記のページに書かれているようないくつかの問題がありました。 ハイブリッド アプリケーションのトラブルシューティング | Microsoft Docs その中でも「WPFでホストされているWindowsフォームコントロールは、常にWPFコンテンツの一番上に表示さ...

item: None

$tagSerchWord

// PHPのテストをしています。 //

C#WPF
Yoshi1123をフォローする
Invisible Works

コメント

タイトルとURLをコピーしました