2015-09-28 1 views
-1

Я не могу добавить элемент управления webbrowser к панели в winapp, получив эту ошибку «Невозможно получить дескриптор окна для элемента управления« WebBrowser ». Элементы управления без окон управления ActiveX не поддерживаются. «я также пытался сделать это с помощью STAThread какне может вставить webbrowser внутри панели в C# winapp

Thread uy = new Thread(me_p); 
uy.SetApartmentState(ApartmentState.STA); 
uy.Start(); 

private void me_p(object obj) 
{ 
//throw new NotImplementedException(); 
this.p_bottom.Controls.Add(this.webBrowser2);   
} 
+1

Как часто вы хотите задать этот вопрос? – fubo

+1

Возможный дубликат [Получение ошибки при вставке веб-браузера внутри панели в C#] (http://stackoverflow.com/questions/32820005/getting-error-on-inserting-webbrowser-inside-panel-in-c-sharp) – fubo

+0

yes я спросил об этом, но я не получил ответа, поэтому попытался объяснить его по-разному. –

ответ

0

Это прекрасно работает, когда сделано таким образом

private void InitializeComponent() 
{ 
    this.panel1 = new System.Windows.Forms.Panel(); 
    this.webBrowser1 = new System.Windows.Forms.WebBrowser(); 
    this.panel1.SuspendLayout(); 
    this.SuspendLayout(); 
    // 
    // panel1 
    // 
    this.panel1.Controls.Add(this.webBrowser1); 
    this.panel1.Location = new System.Drawing.Point(47, 149); 
    this.panel1.Name = "panel1"; 
    this.panel1.Size = new System.Drawing.Size(200, 100); 
    this.panel1.TabIndex = 0; 
    // 
    // webBrowser1 
    // 
    this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill; 
    this.webBrowser1.Location = new System.Drawing.Point(0, 0); 
    this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20); 
    this.webBrowser1.Name = "webBrowser1"; 
    this.webBrowser1.Size = new System.Drawing.Size(200, 100); 
    this.webBrowser1.TabIndex = 0; 
    // 
    // Form1 
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
    this.ClientSize = new System.Drawing.Size(284, 261); 
    this.Controls.Add(this.panel1); 
    this.Name = "Form1"; 
    this.Text = "Form1"; 
    this.panel1.ResumeLayout(false); 
    this.ResumeLayout(false); 
} 
private System.Windows.Forms.Panel panel1; 
private System.Windows.Forms.WebBrowser webBrowser1; 

Вы можете иметь браузер до инициализации, а затем использовать его в своих потоках.