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

フォームのイベント取得

環境/言語:[WinXP、VB2005 NETFramework2.0]
分類:[.NET]

Form1とForm2があって
Form1は最前面に出しておいてボタンが一つあります。
Form1をロード後Form2のイベントを呼び出して処理を行います。
このときForm1にあるボタンをクリックしてもForm2のイベント処理中は
Clickイベントを取得してくれません。
Form1からForm2のイベントを呼び出すのがあまりよろしくいないのは
知っていますが都合上こうなってしまいました。
他のイベント中にクリックイベントを取得することはできないのでしょうか?
また非同期スレッドを用意してClickイベントを取得することなどは
できるのでしょうか?

つたない質問ですがよろしくお願いします。
■No23309に返信(mezashiさんの記事)
イベントを取得する、という考えではなく、
イベント内で行われている処理と同じ処理をさせる(同じメソッドを使う)、と考えてみてはどうでしょうか。


一番簡単なのはForm1側、Form2側両方に同じコードをコピペすることですが、
コードを増やしたくないのなら
イベント内の処理を別のメソッドに切り分け、
そのメソッドだけPublicにするとForm1、2両方で
使うことができます。
2008/11/05(Wed) 19:32:47 編集(投稿者)

■No23310に返信(カドルドエグさんの記事)
> ■No23309に返信(mezashiさんの記事)
カドルドエグさん、ご回答ありがとうございました。

> イベントを取得する、という考えではなく、
> イベント内で行われている処理と同じ処理をさせる(同じメソッドを使う)、と考えてみてはどうでしょうか。
>
>
> 一番簡単なのはForm1側、Form2側両方に同じコードをコピペすることですが、
コントロールもコピペする必要がでてくるので避けています。
Form1を最前面におくので例えVisibleで消すとしても
あまりやりたくないと思っています。
(容量が増えてデバッグもやりにくくなるので。。。)

> コードを増やしたくないのなら
> イベント内の処理を別のメソッドに切り分け、
> そのメソッドだけPublicにするとForm1、2両方で
> 使うことができます。
Form2内の処理をPublic化してForm1から処理しましたが変わりませんでした。

追記:
 コントロールのコピペもやってみましたが結果変わりませんでした。
というのはForm2内の処理でレポートのPDF化をしているんですがその処理が
非常に重く(コードは一行ですが)、その処理をしているときはイベントが
起きないようです。

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