- - PR -
最前面にしたい。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-10 15:57
誰か教えてください。
今、VB.NETでシステムを開発しているのですが、困っていることがあります。 印刷のためにExcelオブジェクトにフォーカスを移して処理した後(印刷ダイアログを表示しています)、VB.NETの画面を最前面にして表示したいのですが、ソリューションで実行すると最前面に来てくれるのですが、exeから実行するとwindowsのツールバーがチカチカするだけで、最前面には来てくれません。 なぜでしょうか?原因のわかる方がおられましたら是非力を貸してください。 今、プログラムでは フォーム名.Activate で、最前面にしようとしています。 よろしくおねがいします。 | ||||
|
投稿日時: 2005-02-10 16:17
少し前からの Windows の仕様です。 入力フォーカスを持ったアプリケーションが存在する時に、バックグラウンドタスクからアプリケーションを起動したような場合、後から起動したアプリケーションが入力フォーカスを奪わないようとの配慮からです。 これに対処するためには、 ・レジストリ設定を変更する。(システムグローバルに挙動が変わってしまいます) ・アプリケーションを起動するコードで対応する。 のどちらかを行います。 詳細はサポート情報の 文書番号: 97925 [SDK32] SetActiveWindow() と SetForegroundWindow() の機能 で解説されているので、参照してみてください。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2005-02-10 16:44
希望される動作は
・画面を最前面に表示し、フォーカスも当てたい ・画面を最前面に表示するだけ のどちらでしょうか? (FormActiveを使用しているので前者だとは思いますが) 前者を希望されるのであれば、渋木宏明(ひどり)サマのおっしゃる通りとなりますが、 後者であれば、TopMostプロパティを使用してはいかがでしょうか? | ||||
|
投稿日時: 2005-02-10 17:40
返信ありがとうございます。
希望する動作は ・画面を最前面に表示し、フォーカスも当てたい です。 FormActiveとTopMostプロパティを併用するのは良くないですか? また、 文書番号: 97925 [SDK32] SetActiveWindow() と SetForegroundWindow() の機能を読んでみたのですが、VB.NETでどのように使用していいのかわかりませんでした。 教えてもらっても良いですか? ひよっこですいません。 | ||||
|
投稿日時: 2005-02-10 18:41
ひろこさま
私も昔同じような問題に直面しまして(その時はVCでしたが^−^;) 以下のサイトを利用しました。 http://techtips.belution.com/ja/vc/0012/ 解説は文書番号: 97925 よりは分かりやすいと思います。 |
1