在我的树视图中单击标签后,我希望焦点切换到我的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()));
}
答案 0 :(得分:3)
您使用的TreeView事件非常重要,您不清楚使用哪一个。电视不喜欢在发射事件时失去焦点,它会自动将其移回。
仅使用AfterSelect事件来执行此代码。
是的,NodeMouseDoubleClick事件有此问题。解决方法是延迟事件处理程序的操作,直到在电视处理完事件后。优雅地使用Control.BeginInvoke()方法。像这样:
private void treeView1_MouseDoubleClick(object sender, MouseEventArgs e) {
this.BeginInvoke(new Action(() => webBrowser1.Focus()));
}
答案 1 :(得分:1)
if (e.Node.Text == "Sales Screen")
{
var txt = Properties.Resources.SalesScreen;
webBrowser1.DocumentText = txt;
webBrowser1.Focus();
}