午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

ユーザーコントロール(WPF)のDLLを作ってアプリで使うまでの手順メモ

ユーザーコントロールのDLLを作ってアプリで使うまでの手順メモ

いつものように間違っていたり冗長なところがあると思うけどできたので書いておく
字ばっかりで絵がないとわかんないよのね
 
 
ユーザーコントロールのDLLを作成するまで
  1. WPFアプリのプロジェクトを新規作成
  2. ソリューションにクラスライブラリの新規プロジェクトを追加
  3. 追加したクラスライブラリにユーザーコントロールを新規追加
  4. ユーザーコントロール作成、ビルド
  5. WPFアプリのデザイン画面(XAML)にユーザーコントロール追加して動作確認
  6. ユーザーコントロールに機能を追加していく
  7. ユーザーコントロール完成、Releaseでビルド
 
作ったユーザーコントロールのDLLを他のアプリで使うまで
  1. WPFアプリのプロジェクトを新規作成
  2. プロジェクトの参照に作ったユーザーコントロールのDLLを追加
  3. ツールボックスにユーザーコントロールを追加
 
 
作成するユーザーコントロール
イメージ 1
グラデーション画像を表示して、画像クリックでクリックした座標と色を表示する
 
 
 
 
 
1.WPFアプリのプロジェクトを新規作成

f:id:gogowaten:20191212134131p:plain

名前は
20180329_ユーザーコントロール作成テスト
にした
今回はこれがユーザーコントロールデバッグ用アプリになる
 
 
 
2.ソリューションにクラスライブラリの新規プロジェクトを追加
イメージ 3
メニューのファイル→追加→新しいプロジェクト
または
ソリューションエクスプローラーのソリューションを右クリック→追加→新しいプロジェクト

f:id:gogowaten:20191212134146p:plain

クラスライブラリ(.NET framework)を選択
名前は
ClassLibrary1ColorPicker
にした
 

f:id:gogowaten:20191212134159p:plain

追加したところ、ソリューションエクスプローラーで確認すると
ソリューションにClassLibrary1ColorPickerが追加されている


 
 
 
3.追加したクラスライブラリにユーザーコントロールを新規追加

f:id:gogowaten:20191212134209p:plain

ソリューションエクスプローラーでClassLibrary1ColorPickerを右クリック
メニューの追加→ユーザーコントロール

f:id:gogowaten:20191212134218p:plain

ユーザーコントロール(WPF)を選択
名前は
ColorPicker.xaml
にした
 

f:id:gogowaten:20191212134229p:plain

追加したところ
ソリューションエクスプローラーで確認すると
ClassLibrary1ColorPickerの中にColorPicker.xamlが追加されている


 
4.ユーザーコントロール作成、ビルド

f:id:gogowaten:20191212134239p:plain

ColorPicker.xamlに書いていく
10~14行目が書き加えたところ
Gridの中にStackPanelを追加、その中にTextBlockとBorder、Imageコントロールを追加

f:id:gogowaten:20191212134255p:plain

ここで一旦ビルドして
 

f:id:gogowaten:20191212134305p:plain

ビルド、正常終了したところ
これでツールボックスにユーザーコントロールが表示されるようになる


イメージ 12
ツールボックスで確認すると追加したユーザーコントロールのColorPickerが表示されていた
これで他のButtonやTextBlockみたいにMainWindowに追加できるようになったのでダブルクリックやドラッグアンドドロップでMainWindowに追加してみる
 
 
 
5.WPFアプリのデザイン画面(XAML)にユーザーコントロール追加して動作確認

f:id:gogowaten:20191212134320p:plain

MainWindowにユーザーコントロールを追加したところ
デザイン画面にユーザーコントロールが表示されて
XAMLの7行目と12行目が追加変更された
7行目がよくわかんない、こういうもんなんだなあって思う程度
でもこれでできたっぽいので実行(デバッグ開始)してみると
 
イメージ 14
ユーザーコントロールが表示されている、できてる
確認できたのでデバッグは一旦終了して、機能を追加していく、画像を表示とかクリックした場所の色を表示するとかの動作
 
 
6.ユーザーコントロールに機能を追加していく

f:id:gogowaten:20191212134334p:plain

ソリューションエクスプローラーからユーザーコントロールColorPicker.xamlを右クリック
メニューのコードの表示
または
ColorPicker.xamlを表示した状態でF7キー
 

f:id:gogowaten:20191212134343p:plain

ここにColorPicker.xamlの動作を書いていく
いつものWPFのアプリのときとほとんど同じ感じ
 

f:id:gogowaten:20191212134353p:plain

書いた動作内容は
  • 起動時にグラデーション画像を作成して、それをImageコントロールに表示
  • Imageコントロールをクリックしたら場所と色を取得して
  • それぞれTextBlockとBorderに表示する
以上を書いたので
 

f:id:gogowaten:20191212134405p:plain

ビルドしてからデバッグ用のMainWindowのデザイン画面に戻ってみると
 
 

f:id:gogowaten:20191212134416p:plain

MainWindow.xaml
グラデーション画像が表示されている!でも小さくて表示しきれていないので
14行目を書き換えて
 

f:id:gogowaten:20191212134427p:plain

14行目にあった大きさ指定とか全部消したところ
全部表示された
 
名前の変更、別にしなくてもいいけど
7行目にある
ClassLibrary1ColorPicker
myColorPicker
に変更してみる

f:id:gogowaten:20191212134439p:plain

7行目にある
ClassLibrary1ColorPickerを右クリック、メニューの名前の変更で

f:id:gogowaten:20191212134451p:plain

myColorPickerに変更すると14行目の名前のところも同時に変更してくれる

f:id:gogowaten:20191212134506p:plain

変更できた
 
 
実行(デバッグ開始)してみる
イメージ 24
表示された!
 
クリックしてみると
イメージ 25
クリックした場所の座標がWindow上部左上のTextBlockに、
色が上部中央のBorderに表示された
これで目的の動作はできたので完成!
7.ユーザーコントロール完成、Releaseでビルド

f:id:gogowaten:20191212134519p:plain

ReleaseでビルドしようとDebugからReleaseに変更したら
なんかエラー出るけど気にしないで続行
 

f:id:gogowaten:20191212134531p:plain

64bit版にするためにAny CPUからx64に変更する
けど32bitでいいならAny CPUのままでもいいのかも
 

f:id:gogowaten:20191212134540p:plain

Release、64bitに変更したところ、エラーはそのままだねえ
リビルドすれば正常に表示されるってあるから
ビルドすると
 

f:id:gogowaten:20191212134551p:plain

正常終了した、デザイン画面のエラー表示もなくなった
これでできたみたいなのでReleaseをDebugに、x64をAny CPUに戻しておく
DLLファイルができたので確認してみる
 

f:id:gogowaten:20191212134601p:plain

できている!
場所は
…\20180329_ユーザーコントロール作成テスト\ClassLibrary1ColorPicker\bin\Release\ClassLibrary1ColorPicker.dll
次はこれを使うまで
 
 
 
1.WPFアプリのプロジェクトを新規作成

f:id:gogowaten:20191212134615p:plain

名前は
20180330_ユーザーコントロールのDLLを使う
にした
 
 
2.プロジェクトの参照に作ったユーザーコントロールのDLLを追加

f:id:gogowaten:20191212134625p:plain

ソリューションエクスプローラーから参照を右クリック
メニューの参照の追加で参照マネージャーを開いて
 

f:id:gogowaten:20191212134636p:plain

左側の項目から参照を選んで、参照ボタン
参照するファイルの選択画面でさっき作ったユーザーコントロールのDLLファイルを選択して追加ボタン
 

f:id:gogowaten:20191212134650p:plain

参照マネージャーに戻って、ユーザーコントロールのDLLファイルにチェックを入れてOKボタンで追加される
 

f:id:gogowaten:20191212134659p:plain

追加されたところ
ソリューションエクスプローラーの参照にユーザーコントロールのDLLClassLibrary1ColorPickerが追加されている
 
 
 
3.ツールボックスにユーザーコントロールを追加
 

f:id:gogowaten:20191212134721p:plain

適当なところで右クリック
メニューからアイテムの選択
 

f:id:gogowaten:20191212134735p:plain

ツールボックスアイテムの選択画面が開く
WPFコンポーネントのタブを選択
読み込みに少し時間かかる
 

f:id:gogowaten:20191212134747p:plain

右下の参照ボタン
 

f:id:gogowaten:20191212134758p:plain

目的のユーザーコントロールのDLLファイルを選択して開くボタン
この辺はさっきのソリューションエクスプローラーの参照の追加と同じ感じ
 

f:id:gogowaten:20191212134811p:plain

ツールボックスに戻る、ユーザーコントロールが一覧に追加されてにチェックが入っているのでOKボタン
 

f:id:gogowaten:20191212134822p:plain

ツールボックスにユーザーコントロールが追加された!
これでツールボックスからドラッグアンドドロップかダブルクリックでMainWindowに追加できる
 
 

f:id:gogowaten:20191212134833p:plain

MainWindowに追加したところ
 

f:id:gogowaten:20191212134843p:plain

XAMLを修正してデバッグ開始してみると
 
イメージ 45
動いた!
 
これでできたわけだけど
この方法が正しいのかはわからない、うまくいった手順を記録しただけ
気になったのが作ったユーザーコントロールのDLLを他のアプリで使う時に同じような参照の追加を2回するところ
どちらか1個でいいんじゃないと思って試しにソリューションエクスプローラーの参照からDLLを削除してみたら

f:id:gogowaten:20191212134900p:plain

参照から削除してみると
 

f:id:gogowaten:20191212134910p:plain

エラーになった
ツールボックスの方を見ていると
 

f:id:gogowaten:20191212134924p:plain

こちらは削除していないのでそのまま残っているねえ、でもエラー
 
今度は逆にツールボックスの方を削除してみる
ソリューションエクスプローラーの参照は追加し直してから

f:id:gogowaten:20191212134935p:plain

ツールボックスのユーザーコントロールを削除
 

f:id:gogowaten:20191212134945p:plain

あれ?今度はエラーにならない
デバッグ開始してみると普通に動いた
ってことはツールボックスへのアイテムの選択での追加は必要じゃないみたい
ってことはデザイン画面へユーザーコントロールを追加した時にXAMLに書き込まれた7行目が関係ありそうねえ、でもわかんないしできたからいいや
 
またカラーピッカーが使いたくなって、以前も作った気がする 
けどVBだったし、なによりもDLLじゃなかったので、どうせ作るなら他のアプリでも使えるようにユーザーコントロールでDLLで作ろうかと、前はDLLとか知らなかったからね、今なら作れるんじゃないかと
 
 
 
 
関連記事
 
2018/04/06は1週間後
カラーピッカーのdll(ライブラリ)作った、WPFユーザーコントロール ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15447603.html
 
 
 
2018/04/03、テストじゃなくて実際に使うものを作ってみた
WindowsFormのNumericUpDownみたいなのをWPFのユーザーコントロールでDLLで作ってみた ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15442773.html
 
2018/2/18、このときはユーザーコントロールなしの関数だけのDLL作成だった
dllファイル(クラスライブラリ.NET framework)の作り方と使うまでの手順メモ ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15377219.html
 
 
2016/3/29、ちょうど2年前かあ、同じこと繰り返しているなあw
WPFVB.NETでカラーピッカーその1 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/14018045.html
 
 
 
2年後
 .NET Core、WPF、ユーザーコントロールのDLLをアプリで使うまでの手順メモ - 午後わてんのブログ

gogowaten.hatenablog.com