tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルブラウザコントロールで選択された文字をテキストボックスに入れるについて
記事No11277
投稿日: 2014/06/10(Tue) 23:15
投稿者simo
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.ShiftKey Then
            WebBrowser1.Document.ExecCommand("Copy", False, Nothing)
            TextBox3.Text = Clipboard.GetText
        End If
    End Sub

上の様なコードを書いて、シフトキーを押した時に、ブラウザコントロールで選択された文字列をテキストボックスに入れる様にしているのですが、上手くいきません。

一度テキストボックスをクリックしてからシフトキーを押すときちんと動作します。

どうしたら良いでしょうか?

[ツリー表示へ]
タイトルRe: ブラウザコントロールで選択された文字をテキストボックスに入れるについて
記事No11278
投稿日: 2014/06/11(Wed) 09:40
投稿者Hongliang
IMessageFilterを実装したクラスを作成し、そのPreFilterMessageでMsgがWM_KEYDOWNのときに処理すればいけるかと思います。
// 詳しい使い方は検索してみてください。

[ツリー表示へ]
タイトルRe: ブラウザコントロールで選択された文字をテキストボックスに入れるについて
記事No11279
投稿日: 2014/06/11(Wed) 09:57
投稿者魔界の仮面弁士
>         If e.KeyCode = Keys.ShiftKey Then
シフトキーの押下判定は、
 If e.Shift Then
で行った方がわかりやすいかも。


> 一度テキストボックスをクリックしてからシフトキーを押すときちんと動作します。

方法は幾つかありますが、たとえば――

Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As EventArgs) Handles MyBase.Load
        KeyPreview = True
        WebBrowser1.Navigate(どこかのURL)
    End Sub

    Private Sub WebBrowser1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles WebBrowser1.PreviewKeyDown
        OnKeyDown(New KeyEventArgs(e.KeyData))
    End Sub

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.Shift Then
            WebBrowser1.Document.ExecCommand("Copy", False, Nothing)
            TextBox1.Text = Clipboard.GetText(TextDataFormat.UnicodeText)
        End If
    End Sub
End Class

[ツリー表示へ]
タイトルRe^2: ブラウザコントロールで選択された文字をテキストボックスに入れるについて
記事No11280
投稿日: 2014/06/11(Wed) 21:31
投稿者simo
> >         If e.KeyCode = Keys.ShiftKey Then
> シフトキーの押下判定は、
>  If e.Shift Then
> で行った方がわかりやすいかも。
直しました。

魔界さんのコードで上手く行きました。有難うございます。

クラスの作成は遠慮しておきます。

VB6の時よりも1つ余計に記述が必要なんですね。

[ツリー表示へ]