因为当前线程不在单线程单元中,故无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”
我按孟子E章的一篇文章中说的在程序中加入mshtml控件时很正常,但现在需要在窗体A中按一个按钮,然后弹出一个带MsHtml控件的窗口B,在B窗口中我写的代码如下:
private void btnView_Click(object sender, System.EventArgs e)
{
FrmBrowser bw=new FrmBrowser();
bw.Url="www.163.com";
bw.Show();
}
但是,当一按A窗体中的按钮时就会在B窗体中报错,错误消息为:“因为当前线程不在单线程单元中,故无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2””
报错的地方在窗体B的“InitializeComponent()”中:
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(FrmBrowser));
this.TxtUrl = new System.Windows.Forms.TextBox();
this.Wbrw = new AxSHDocVw.AxWebBrowser(); //在这一句报错。
测试了一下,如果在窗体A初始化时就生成B的新实例,则不会报错。
但因为我需要在A中打开N个(数量不确定)B的实例,所以不可能在A初始化时就初始化下一堆B的实例(实际运行时可能只需要一个,也可能需要几十个B的实例。
请问我遇到的这个问题该如何解决呢?