タイトル : ShowDialog時の処理について 投稿日 : 2008/09/01(Mon) 15:52 投稿者 : 皐月
こんにちは、いつもお世話になっております。 VB2005で開発を行っております。USB通信ケーブルから接続されたデバイスの信号を受け取り、状態のモニター、設定が行えるアプリケーションを作成しております。 通常の信号読み取りはメイン画面から、ループ処理を利用して行っています。読み取った値はメイン画面のそれぞれの項目のラベルへ入力されるようになっており、値が表示されているラベルをクリックすると値の設定が行えるようにしてあるのですが、値の設定画面(Form2)をForm2.ShowDialogで呼び出しユーザーが値を設定するまでメイン画面には戻れないような仕様にしたいと考えています。 そのため、ShowDialogをそのまま使用してForm2を呼び出していたのですが、このとき他のFormに干渉しなくなってしまうため、Mainで作成した信号読み取りの処理を通らなくなってしまいました。Form2にMainと同等のソースコードを記述してみました。(メイン画面同様、ループ処理でデバイスより送られてくる信号を読み続ける処理です)が、Form2の画面をShowDialogしてもForm2は表示されずループの処理まですすんでしまっているようです。 デバッグで確認してみますとForm2_Load後にループの処理を呼び出しているのですが、実際はなぜかForm2が表示されず、信号読み出しのループが行われている状態となっているようです。流れとしては Form2.ShowDialogでForm2を呼び出す ↓ Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load, DispSetdata.Enter DispSetdata.Select() 信号読み取りのループ処理をコール End Sub という風になっております。信号読み取りのループ処理には System.Windows.Forms.Application.DoEvents() の記述があります。Form2の画面を表示するためにはどうすればよいのでしょうか? 今回のソースはShowDialogを使用していますが、ShowDialogと同等の動作(他のFormにフォーカスが移動しない)をするのであれば、ShowDialogであるかどうかは、気に留めませんので別の方法がありましたら、ご教授ください。 また、上記のものとは別になりますが、印刷の呼び出し中に、PrintDialog1.ShowDialog()がありますのでこちらもループの処理を通るように修正したいのですが、どこを編集すればよいのかわからない状態です。 宜しくお願いいたします。 |