アプリケーションに WebBrowser を追加して Web ページを表示できるようにしようとしていますが、スレッド タイプで問題が発生し続けます。
現在、私は得ています:
現在のスレッドがシングル スレッド アパートメントにないため、ActiveX コントロール '8856f961-340a-11d0-a96b-00c04fd705a2' をインスタンス化できません。
そして、この問題に関連するこの質問を見つけました:シングルスレッド アパートメント - ActiveX コントロールをインスタンス化できません
ただし、コードに Main() メソッドがなく、その質問に対する解決策を試みると、フォーム コントロールに WebBrowser を追加するときにエラーが発生します。
ここにあるコードを使用しています:
http://www.apress.com/9781430228530
直接ダウンロード: http://www.apress.com/downloadable/download/sample/sample_id/1173/
そして、私は第 14 章で、HorizontalExplorerBar フォルダー内にいます。
参照用に使用しているコードは次のとおりです。
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using ProIeDev.BandObjectDemo.BandObject;
using System.Threading;
using System.Windows.Forms;
namespace ProIeDev.BandObjectDemo.HorizontalExplorerBar
{
[ComVisible(true)]
public class HorizontalExplorerBar : BandObject.BandObject
{
private WebBrowser webBrowser1;
private System.Windows.Forms.RadioButton radioButton1;
public HorizontalExplorerBar()
{
// var t = new Thread(InitializeComponent);
// t.SetApartmentState(ApartmentState.STA);
// t.Start();
InitializeComponent();
}
public override void DefineMetadata()
{
ClassId = "{B028EA5C-B226-4E4B-88C6-8842A152BC5B}";
ProgId = "ProIeDev.BandObjectDemo.HorizontalExplorerBar";
ObjectName = "TodoBar Horizontal";
ObjectTitle = "TodoBar Horizontal";
HelpText = "TodoBar Horizontal";
Style = BandObjectTypes.HorizontalExplorerBar;
}
#region Form Designer
private void InitializeComponent()
{
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.webBrowser1 = new System.Windows.Forms.WebBrowser();
this.SuspendLayout();
//
// radioButton1
//
this.radioButton1.AutoSize = true;
this.radioButton1.Location = new System.Drawing.Point(323, 34);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(85, 17);
this.radioButton1.TabIndex = 0;
this.radioButton1.TabStop = true;
this.radioButton1.Text = "radioButton1";
this.radioButton1.UseVisualStyleBackColor = true;
//
// webBrowser1
//
this.webBrowser1.Location = new System.Drawing.Point(44, 19);
this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
this.webBrowser1.Name = "webBrowser1";
this.webBrowser1.Size = new System.Drawing.Size(250, 250);
this.webBrowser1.TabIndex = 1;
//
// HorizontalExplorerBar
//
this.BackColor = System.Drawing.Color.DarkBlue;
this.Controls.Add(this.webBrowser1);
this.Controls.Add(this.radioButton1);
this.Name = "HorizontalExplorerBar";
this.Size = new System.Drawing.Size(456, 177);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion Form Designer
}
}