DOBON.NET DOBON.NETプログラミング掲示板過去ログ

dll化したフォームの扱いかた

環境/言語:[XP VB.NET Framework2.0]
分類:[.NET]

はじめまして。VB.NETを使って3日目の超初心者です。

どなたかご教示ください。

複数の入力フォームがあり、その各フォームのテキストボックス上でFunctionキーを押下すると検索フォームを開くというものを作ることになりました。
この入力フォームは1フォーム=1exeで作り、検索フォームだけは全exe共通のためdllで作らなければいけないことになりました。

検索フォームをdllとして作った後、どうやって入力フォームから呼び出して表示させれば良いのかわかりません。この実装方法がわからず、3日間ネット、書籍を調べたのですが、調べ方が悪いのかヒントになるようなことすら見つからず焦っています。

どなたか、わたしにアドバイス、参考文献の情報があれば教えてください。
exe側のプロジェクトで「参照の追加」を開いてdllを追加します。
これで、exe側でdll側のものを使えるようになります。

結果受け渡し用のメソッドか読み取り専用プロパティ等(ここではtextForReturn)をDLLの検索フォーム側にpublicで
用意しておいたとして、以下のようにします。例えばですが。


使いたいところ(例えばSub内)で

Dim searchfrm = New As DLL_A.SearcherForm
Dim resultcheck As DialogResult

resultcheck=searchfrm.ShowDialog
If resultcheck=DialogResult.Yes Then
    Me.txtbox1.Text=searchfrm.textForReturn
    ・・・その後の処理
Else
    Msgbox("検索はキャンセルされました")
    Exit Sub
End If
・・・何か処理

searchfrm.Dispose
こどさん、ご教示ありがとうございます。

出来ました!!!
教えていただいた内容でやりたいことができました。
感激です!(^^/

どこ探してもわからなかったので無理なのかな?
と少し不安になってました。
検索フォームが表示された時はうれしかったです。

こどさんのように、困っている人を救ってあげれる
だけの知識をつけれるよう、わたしガンバリます。(@^^@

本当にありがとうございました。
解決済み!
解決済みのところすいません。

最初の書き込みを見たところ、継承クラスを使用すればいろいろと便利に作れるんじゃないかなと感じました。

もし興味がございましたら、「継承クラス」や「オーバーライド」などの単語で検索してみてください。

Visual Studioの「Visual Basic 言語リファレンス」で「Function ステートメント」の"Overrides"や"Overridable"の説明とあわせて読んでみるのもいいかもしれません。


かなりアバウトに説明しますと、
共通するプロパティや処理をひとつのクラスで管理できる。
でしょうか・・・。
こど。さん が提示されたような使い方も可能ですし、画面のサイズを一元管理できたり、同じ関数を各検索フォームごとにカスタマイズして使用したりもできます。

せっかくのオブジェクト指向なので、がんばって最大限活用できるようにがんばってください。
■No16527に返信(いそろくさんの記事)
> 最初の書き込みを見たところ、継承クラスを使用すればいろいろと便利に作れるんじゃないかなと感じました。

検索フォームが表示される部分だけを書けば良いのですから、わざわざ基底クラスを作って継承した方が良いとは言い切れないでしょう。
やるにしてもインターフェイスの方が良いかもしれません。

> せっかくのオブジェクト指向なので、がんばって最大限活用できるようにがんばってください。

オブジェクト指向は必ずポリモーフィズムを含まなければならないと思っている方が多いようですが、意地悪な言い方をすると継承はオブジェクト指向とは直接関係ないですね。
解決済み!
「この方法でやれ」とは言ってません。
「もし興味がありましたら」という言葉も使っていますので、興味を持って、調べてみて、
作ろうとしているプログラムに適している手法が見つかったらそれを使えばいいと思います。


> オブジェクト指向は必ずポリモーフィズムを含まなければならないと思っている方が多いようですが、意地悪な言い方をすると継承はオブジェクト指向とは直接関係ないですね。
確かに意地悪な言い方ですね。
私も海に行ったら海に入らなければならないなんて思っていません。

オブジェクト指向プログラミングをしているのに、その概念の一つを無視しろというのはいかがなものか思います。
初めて3日目の超初心者とありましたので、ご存知でなければと思い、一つの選択肢を提示しただけでした。

多くの方の混乱を招くような書き込みでしたらおっしゃってください。
すぐに削除いたします。
解決済み!
私は「複数の入力フォーム」に対して全体の一部のフォームという理解をしましたが
いそろくさんは全フォームという理解をしての発言だったと想像します。

はいこーんさんは前者で、前者から継承の利用が連想しにくかったため
先の返答になったと思われます。

たぶん、簡単に適用例を一緒に書かれたほうがよかったのかなとも思います。
> たぶん、簡単に適用例を一緒に書かれたほうがよかったのかなとも思います。

#「主題に対する適用例」に訂正と解決済みのチェック
解決済み!
2006/07/07(Fri) 15:57:25 編集(投稿者)

■No16532に返信(いそろくさんの記事)
> 「この方法でやれ」とは言ってません。
> 「もし興味がありましたら」という言葉も使っていますので、興味を持って、調べてみて、
> 作ろうとしているプログラムに適している手法が見つかったらそれを使えばいいと思います。

はい。それは知っています。
僕もその方法は絶対まずいとも言っていません。
これは誤解されているだけだと思います。

言いたかったのは、『言い切れない』ので、それだけのために基底フォームを用意するのではなく、インターフェイスを介すのも手ですよ。
ということです。

言い切れない、ですから否定しているわけじゃないんですよ。
これ自体はまずいとは思いませんがどうでしょうか?

> 確かに意地悪な言い方ですね。

うーん。ごめんなさい。正直に言いましょう。
これはいそろくさんを思いやって敢えてつけた言葉です。
日本人なら誰しもがやると思うのですが、ちょっと今回はむしろ逆効果だったみたいです。

> 私も海に行ったら海に入らなければならないなんて思っていません。

はい。そうですね。
僕もいそろくさんはそんなことは言っていないと当初から思っていましたよ。

> せっかくのオブジェクト指向なので、がんばって最大限活用できるようにがんばってください。

僕が否定的なのはこの表現だけです。(全部を否定していると誤解なさっているようですが)
『せっかく』という表現がとても気になりました。

> オブジェクト指向プログラミングをしているのに、その概念の一つを無視しろというのはいかがなものか思います。

無視しろとは言っていません。ポリモーフィズムには継承と実装があります。
僕は無視しているどころか、継承ではなく実装を選択するのも手ですよと(むしろ半分肯定的に)言っているにすぎません。

すべてにおいて否定的な意見を述べたわけではないです。誤解なさらずに。

なので、以下のまどかさんの考察も残念なことにすべて間違ってます。
フォローしてもらったのに、否定的で申し訳ないですが・・

> はいこーんさんは前者で、前者から継承の利用が連想しにくかったため
> 先の返答になったと思われます。
> たぶん、簡単に適用例を一緒に書かれたほうがよかったのかなとも思います。

僕の言い方も悪かったと思います。

#ちょっと削除。
解決済み!
> なので、以下のまどかさんの考察も残念なことにすべて間違ってます。
> フォローしてもらったのに、否定的で申し訳ないですが・・

がーん!(; ;/
#またチェック忘れた。
解決済み!
■No16541に返信(まどかさんの記事)
> がーん!(; ;/
ごめんなさい。言い方に問題がありました。
お気遣いはありがたいと思っています。
解決済み!
オブジェクト指向と、オブジェクト指向プログラミング言語が混同されているスレの悪寒…
(何か若干白熱してるようですが)
今見たら、書いたコードに若干間違いが!ひぃ。

わざわざ最後にだけ「searchfrm.Dispose」書いてるけど、
ちゃんと書くんなら、Exit Subの前にも書かないとキャンセルの場合だけDisposeのコードがないことに…。…。
勢いだけで書いたのでいい加減だ。
(…ごめんなさ〜い。)
こういうことにならないようにするには、2.0でVB側でも使えるようになったらしい
Usingを使うのがいいんでしょうね。

…トップ姫さん、私のようにならないでね。(ひそひそ。)
解決済み!
いそろく様とはいこーん様との間で議論があるようですが、その内容がこのスレッドの内容からは変わってしまっており、しかもプログラミングに関する議論というよりも、私には、些細な言葉尻を捕らえただけの実の無い感情的な議論としか思えません。このような言い争いは、「お気楽掲示板」でお願いいたします。

はいこーん様には何度も同じような注意をしてしまい、申し訳なく、また気が引ける思いをしております。しかし、このような投稿をそのままにしておくと、この掲示板が荒れてしまうことが想像に難くないため、不本意ながらこのような注意をさせていただいております。ご理解いただければ、幸いです。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板