1

ツリービューでラベルをクリックした後、フォーカスを Web ブラウザーに切り替えて、ユーザーが最初にブラウザーをクリックしなくても上下にスクロールできるようにします。これは私が今持っているコードですが、スクロールしてもツリービューがスクロールされます:

if (e.Node.Text == "Sales Screen")
{
    var txt = Properties.Resources.SalesScreen;
    webBrowser1.DocumentText = txt;
    this.ActiveControl = webBrowser1;
}

これを行う適切な方法は何ですか?ありがとう!

編集:現在これを使用していますが、まだ機能していません:

private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        if (e.Node.Text == "Sales Screen")
        {
            var txt = Properties.Resources.SalesScreen;
            webBrowser1.DocumentText = txt;
            this.BeginInvoke(new Action(() => webBrowser1.Focus()));
        }
4

2 に答える 2

3

使用する TreeView イベントは非常に重要です。どちらを使用するかは明確ではありません。TV は、イベントを発生させたときにフォーカスを失うことを好みません。それ自体でフォーカスを元に戻します。

このコードを実行するには、AfterSelect イベントのみを使用してください。


はい、NodeMouseDoubleClick イベントにはこの問題があります。回避策は、TV がイベント処理するまでイベント ハンドラーのアクションを遅らせることです。Control.BeginInvoke() メソッドでエレガントに。このような:

    private void treeView1_MouseDoubleClick(object sender, MouseEventArgs e) {
        this.BeginInvoke(new Action(() => webBrowser1.Focus()));
    }
于 2013-11-05T19:38:04.870 に答える