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

ListBoxとMsgBox

環境/言語:[VB2005SP1 WinXPSP3]
分類:[.NET]

処理の流れ
 ・印刷ボタンを押したときにMsgBoxを出して印刷の実行をYes/Noで確認します。
 ・ListBoxで選ばれているファイルを印刷しています。
 この処理をするとListBoxがクリックなどをしてもまったく反応しなくなります。
試しにMsgBox処理をコメント化すると問題がありませんでした。

MsgBoxの処理コード
  Res = MsgBox("全てのレポートを印刷しますか?", MsgBoxStyle.YesNo, "全印刷")
If Res <> vbYes Then
Exit Sub
End If

こんなことは初めてなので困っています。どなたかご教授をお願いします。
■No23642に返信(mezashiさんの記事)
> 処理の流れ
>  ・印刷ボタンを押したときにMsgBoxを出して印刷の実行をYes/Noで確認します。
>  ・ListBoxで選ばれているファイルを印刷しています。
>  この処理をするとListBoxがクリックなどをしてもまったく反応しなくなります。
> 試しにMsgBox処理をコメント化すると問題がありませんでした。
>
> MsgBoxの処理コード
>   Res = MsgBox("全てのレポートを印刷しますか?", MsgBoxStyle.YesNo, "全印刷")
> If Res <> vbYes Then
> Exit Sub
> End If
>
> こんなことは初めてなので困っています。どなたかご教授をお願いします。

質問の意味がよくわかりません。

> この処理をするとListBoxがクリックなどをしてもまったく反応しなくなります。

MessageBox を閉じてもということですか?
だとしたら引用元のコードでは現象は再現できないのではないでしょうか。
  • 題名: Re[1]: ListBoxとMsgBox
  • 著者: るしぇ
  • 日時: 2008/12/19 17:26:42
  • ID: 23644
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
2008/12/19(Fri) 17:28:17 編集(投稿者)

■No23642に返信(mezashiさんの記事)
印刷処理みたいに別のプロセスを実行したりすると
フォアグラウンドウィンドウが妙な切り替わりを
する場合を経験しました。

たまにメッセージボックスが裏に回ったりするんだよね。。。
MessageBox を閉じれていないとか、エラーのメッセージボックスが
出てたりとか。。。で操作できなくなってたことがあります。

今回のケースがそれに該当するかどうかは調査してみないと分からない
ことですが、ボクは、対応が面倒だったので、フォームの自作メッセージ
ボックスに切り替えました。
■No23643に返信(じゃんぬねっとさんの記事)
> 質問の意味がよくわかりません。
わかりにくくなってしまって申し訳ありません。

> MessageBox を閉じてもということですか?
閉じた跡に印刷処理に移るので閉じています。

> だとしたら引用元のコードでは現象は再現できないのではないでしょうか。
すいません。自分でListBoxとボタンをおいて簡易でやってみたのですが
再現できませんでした。。。。申し訳ありません。

ちなみにAdobePDFReaderで表示したデータを印刷しています。
他は特異なことはないと思います。

コード(ボタンクリックイベント)
Res = MsgBox("全てのレポートを印刷しますか?", MsgBoxStyle.YesNo, "全印刷")
If Res <> vbYes Then
Exit Sub
End If

Try
//印刷処理//
Catch ex As Exception
MsgBox("印刷できません", MsgBoxStyle.OkOnly, "全印刷")
Finally

End Try

Try以降をコメント化してもListBoxが固まってしまいます。
こんな情報じゃだめでしょうか?
固まるというのが反応が無い(ボタンをクリックしてもへこみさえしない)ということであれば
いわゆる応答なし状態になってます。

考えられることは
AdobeReaderの操作(関数呼び出し)に対して応答が無いことです。(アプリケーション側が無限待ち状態)
これらをコメント化しても再現するようなら他に原因があると思います。
しかしながら、同じような状況であることが予想されます。

とりあえずタスクマネージャでCPU100%になっていないか確認してください。
あとは、デバッグ実行した際にその状況でデバッグメニューで一時停止できるかどうかです。
それができるなら無限ループなどが考えられます。
  • 題名: Re[4]: ListBoxとMsgBox
  • 著者: mezashi
  • 日時: 2008/12/22 9:19:20
  • ID: 23661
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
2008/12/22(Mon) 09:37:14 編集(投稿者)

■No23649に返信(まどかさんの記事)
まどかさんご回答ありがとうございます。
返事が遅くなって申し訳ありません。

> 固まるというのが反応が無い(ボタンをクリックしてもへこみさえしない)ということであれば
> いわゆる応答なし状態になってます。
 PCが固まるという意味ではありません。
他のボタンなどはクリックできイベントも発生するので
なせがListBoxだけクリックしても何も起きないという状況に陥ります。

 少し試してみたのですがどおやらAcrobatのActiveXであるAxAcroPDFを
使用していてMessageBoxを出すとListBoxが動作しなくなりAxAcroPDFから
Acrobatの環境設定などを開いてやる(実行環境からマウスで)とListBoxがまた動作するようになっています。
解決方法は。。。まだ見つけていません。

追記:解決しました。
 フォームのフォーカスがなくなったとき再度フォームにフォーカスが
いくようなコードがあってそれが原因でした。なんであんなことしたんだろ。。
じゃんぬねっとさん 、るしぇさん、まどかさん申し訳ありません
でした。そしてご回答ありがとうございました。
解決済み!

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