注: これはコントロールの組み込み動作に関するものであり、ダブルクリック イベントの作成に関するものではありません。
私のプロジェクトの 1 つで、Windows.Forms.WebBrowser コントロールを HTML のエディターおよびビューアーとして使用しています。何年も問題なく動作していましたが、ダブルクリックすると、クリックされた単語が自動的に選択されることに突然気付きました(これは私のコードではなく、コントロールで発生しただけです)。
突然 (正確な時期は不明)、コントロール内のテキストをダブルクリックしても (編集モードまたは表示モードの両方で) 何も起こりません。私のコードではないため、トラブルシューティングが困難ですが、過去にこの機能に依存していたため、最終製品に影響を与えています。
これに影響を与える (Windows または .Net で) 最近何が変更されたのか (私のアプリの同じバージョンは古い Win7 では正常に動作しますが、最新の Win7 では動作しません)。また、どうすれば以前の機能を取り戻すことができますか? DOM でも自分のダブルクリックを接続してから、テキストの解析を開始して手動で選択する必要がありますか (うーん!)?
私はこの質問に対する答えを探しましたが、ほとんどの場合、DOM イベントに接続する方法を確認するだけで、上記の問題を引き起こす最近の変更については何もわかりません)。どんな助けでも大歓迎です。
問題が発生したときにVS 2010、VB、Win7 x64、IE 10.0.6、.Net 3.5(最新のものに関係なく)を使用しています(コンパイルされているので、VSまたはVBであるとは思えません)。
まったく同じコード (コンパイル済み) を Win7 x86 で IE 8 (Win7 Pro プレーン、アップデートなしでインストール) で実行すると、問題なく動作します。
さらにテストした後、IE 10をインストールするとすぐに、Win7 x86の新規インストール(すべてが正常だった)で問題が発生し始めます。したがって、問題はIE 10にあると確信しています。
再現する手順:
- VS 2010 で新しい VB.Net プロジェクトを作成し、.Net 3.5 をターゲットにします。
- ユーザーコントロールを作成する <--- このステップが重要です
- ユーザーコントロールに Web ブラウザーを追加する
このコードをユーザーコントロールに追加します
Public Sub LoadHTML(html As String) WebBrowser1.DocumentText = html Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete Application.DoEvents() Loop WebBrowser1.Document.Body.SetAttribute("contentEditable", "false") End Sub
そのコントロールをフォームに追加する
次のボタンでフォームにボタンを追加します。クリック イベント:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click UserControl1.LoadHTML("<html><body>This is a test interesting is it not?</body></html>") End Sub
プロジェクトを実行し、ボタンをクリックします
- 次に、「interesting」という単語をダブルクリックしてみてください。選択されていないことに注意してください。
フォーム上に直接 webbrowser コントロールをスローすると、正常に動作します。問題はユーザーコントロールにあります(IE10にアップデートした後だけの問題です)。
.Net 3.5および4.0を使用してVS 2010を使用して問題を再現できます。.Net 4.5を使用してVS 2012を使用して問題を再現できます。