WebBrowserで一時的に戻るボタンを無効にするには?

解決


あきお  2005-08-14 19:54:54  No: 124092

自作のウェブブラウザを作成中の者です。
WebBrowserコントロールとそれと連動するようにコマンドボタンで
「戻る」「進む」や特定用途用にコンボボックスも1つ配置したのですが、
実際にプログラムを動作させ、コンボボックスに文字を入力途中で文字を
修正する場合にバックスペースキーを押すと「戻る」が反応して
ウェブページが1ページ戻る動作をして、コンボボックスのテキストが
修正できなくて困っています。

どうすれば、コンボボックスにフォーカスがある間だけ、「戻る」機能を
無効に出来るでしょうか?

どなたかご教授お願いいたします。


あきお  2005-08-14 19:56:36  No: 124093

すみません。環境を書き忘れておりました。
VB6 SP5 です。
よろしくお願いいたします。


通ってみた  2005-08-15 02:40:59  No: 124094

戻る「ボタン」が有効になってるからそうなる訳ではないですねぇ・・・
ブラウザってBSキー押したら1ページ前に戻るようになってるのです

しかし通常ブラウザ領域にフォーカスがなければBSキー押してもそうはならないはずなんですがねぇ・・・

もしそれが絶対に戻る「ボタン」のせいだ、というのであれば、コンボボックスにフォーカスが当たったらフラグを立てて、フォーカスを失ったらフラグを戻すようにして、ボタンのコード内でフラグが立ってたら処理から抜けるようにすればいいと思いますが

フォーカスに関してはネットで調べれば出てくるでしょう

フラグはBooleanでいいでしょう


あきお  2005-08-15 08:01:40  No: 124095

通ってみたさん、回答ありがとうございます。
早速、フラグを立ててやってみましたが、やはり1ページ戻る動作に
なってしまいました。

その後、いじってみて更に気づいた事があります。
Yahooのトップページを開き、検索入力ボックスに適当な文字を入れて
そのままにしておき、それからコンボボックスに何か文字を入れて、
そのままバックスペースキーを押すと、カーソル(縦棒の点滅)は、
コンボボックスにあるのに、なぜかYahooのトップページの入力ボックス
の方の文字が消えてゆきます。また、矢印キーを押すとブラウザ横の
スクロールバーが反応してブラウザの表示画面がスクロールして
しまいます。

ブラウザからフォーカスを外すにはどうしたら良いでしょうか?


通ってみた  2005-08-15 22:32:38  No: 124096

コンボボックスはテキストボックスじゃダメなの?

入力する部分をテキストボックスにして、Enter押したらコンボボックスのテキストを変更するようにすればいいんじゃない?
テキストボックス入力中にもフォーカスがWebBrowserにあるならお手上げ

ちなみに私の環境ではフォーカスは外れますがね


あきお  2005-08-16 08:20:38  No: 124097

あれから、いろいろ原因を探ってみて、分かりました。

MDIフォームの子フォームにブラウザコントロールを配置して、
親フォームに「戻る」やコンボボックスをクールバー内のピクチャボックス上に配置しているのですが、この場合に、ブラウザからフォーカスが移らないようです。(最初に説明せず、申し訳ありません。)

子フォームに

Private Sub Form_Load()
WebBrowser1.Navigate ("http://www.yahoo.co.jp")
End Sub

のように、起動時に自動的にヤフーのトップページを表示させているのですが、
このNavigateメソッドを実行するとフォーカスが親フォームに移動できないよう
です。起動時にメソッドを呼ばないで、ブランクの状態で起動すると
親フォームのコンボボックスの文字を修正できます。

本当は、ブラウザを配置した子フォームにツールバーを配置すると良いのでしょうが
ブラウザ以外の別の子フォームも、任意に開いて親フレーム内の左右に配置したいので、
ツールバーを子フォームに配置してしまうと不都合がでる(ツールバーが
ブラウザ子フォームに合わせて片方に寄ってしまう)ので、
敢えて親フォームに配置したのです。

何か良い手だてはないものでしょうか?


通ってみた  2005-08-16 08:25:57  No: 124098

可能かどうかはわからないけれど、要はフォーカスがWebBrowserから外れればいい訳ですよ

もし、親フォームにフォーカスが移っても子フォームのフォーカスが外れないというだけであれば、子フォームのWebBrowserの後ろにでも何かコントロールを配置しておき、そいつにSetFocusしたら外れるんじゃないでしょうかね

違うフォームがだめなら、同じフォーム上の別コントロールにフォーカスが移ればいい、という発想


あきお  2005-08-18 07:12:31  No: 124099

WebBrowserの後ろに、テキストボックスを配置して、
試してみたのですが、うまくいく時とそうでない時があって、
完全には処理できませんでした。

仕方がないので、SDIに変更しようと思います。
通ってみたさん、アドバイスありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加