Excelアプリケーション内にWinFormを表示したい。ただし、このウィンドウは透明にする必要があります。そのために、私は次のことを行います。
private void InitializeComponent()
{
// other form/ control init code
this.BackColor = System.Drawing.Color.White;
this.TransparencyKey = System.Drawing.Color.White;
// other form/ control init code
}
このフォームをExcelアプリケーションの子として作成したいので、次のコードを使用します。
protected override void OnLoad(EventArgs e)
{
// PINVOKE CALL
User32.SetParent(FORMHANDLE, EXCELAPPHANDLE);
}
これを設定すると、フォームが消えます。これは、上記のコードのコメントを外すと、背景が透明なフォームが表示されるためです。