我在splitcontainer.panel中实现webbrowser控件时遇到了一些奇怪的问题。 抛出上述错误。我尝试过相同的编码,将它带到splitcontainer.panel之外;然后一切正常。
加载网页后,我希望点击网页上的某个字词,然后选择双击的字词并将其显示在信息框中。
如果我们这里的任何专家能够帮助我解决这个问题,我将非常感激。
这是我的样本编码:
PS:它在range1.select()的崩溃
更新:我还注意到进一步测试,如果我不使用webBrowser的动态控制,那么它也可以正常工作。
但动态标签,面板和webBrowser也是我的标准之一。
public partial class Form1 : Form
{
public static string lbname;
public WebBrowser br1 = new WebBrowser();
public WebBrowser br2 = new WebBrowser();
public Form1()
{
InitializeComponent();
}
private void button1_Click_1(object sender, System.EventArgs e)
{
var tab = new TabPage("1");
tabControl1.Controls.Add(tab);
tabControl1.SelectedTab = tab;
tab.Select();
var pnl = new Panel();
tab.Controls.Add(pnl);
pnl.Controls.Add(br1);
Uri url1 = new Uri("http://www.google.com");
br1.Url = url1;
br1.DocumentCompleted += Browser1_DocumentCompleted;
}
private void Browser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
br1.Document.DetachEventHandler("ondblclick", Document_DoubleClick);
br1.Document.AttachEventHandler("ondblclick", Document_DoubleClick);
}
private void Document_DoubleClick(object sender, EventArgs e)
{
IHTMLDocument2 doc1 = br1.Document.DomDocument as IHTMLDocument2;
IHTMLSelectionObject currentSelection = doc1.selection;
if (currentSelection != null)
{
IHTMLTxtRange range1 = currentSelection.createRange() as IHTMLTxtRange;
if (range1 != null)
{
range1.expand("word");
range1.select();
MessageBox.Show("selected text" + range1.text);
}
}
}
===== 当然我已经引用了mshtml和SHDocVw,因为除了splitcontainer.panel之外它正在工作。
答案 0 :(得分:0)
花了很多时间来解决这个问题,我决定取消SplitContainer并改用Panel。不知道为什么,但确定SplitContainer是问题,并设法通过使用Panels来解决。