- PR -

WebBrowserコントロールの上に他のコントロールを表示するには

1
投稿者投稿内容
つつじ
会議室デビュー日: 2007/05/31
投稿数: 1
投稿日時: 2007-05-31 16:18
はじめて投稿します。以後よろしくお願いします。

Microsoft .NET framework SDK v2.0でアプリを開発しており、フォーム上に
WebBrowserコントロールを表示し、さらにWebBrowserコントロール上にかぶせる
レイヤーとして、他のコントロールを表示する構造のアプリを開発することを
考えています。

しかしWebBrowserコントロールの上にレイヤーをかぶせるようなテストアプリを
作成してみたのですが、肝心のかぶせたレイヤーが表示されません。

この解決方法をお教え頂けますと幸いです。

なおテストアプリのコードは以下です:
----
using System;
using System.Drawing;
using System.Windows.Forms;

// レイヤーとして用いるクラス
public class XXXPanel: Panel
{
public XXXPanel()
{
ResizeRedraw = true;
}

// XXXPanel全体に、「×」を表示する。
protected override void OnPaint(PaintEventArgs e)
{
Graphics graphics = e.Graphics;
Pen pen = new Pen(SystemColors.WindowText);

graphics.DrawLine(pen, 0, 0, ClientSize.Width - 1, ClientSize.Height - 1);
graphics.DrawLine(pen, 0, ClientSize.Height - 1, ClientSize.Width - 1, 0);
}
}

// メインフォーム
class XXXForm : Form
{
WebBrowser webBrowser;
XXXPanel xxxPanel;

public XXXForm()
{
this.SuspendLayout();

xxxPanel = new XXXPanel(); // レイヤー(例としてXXXPanel)
webBrowser = new WebBrowser();

webBrowser.SuspendLayout();

xxxPanel.BackColor = Color.Transparent; // 背景は透明
xxxPanel.ForeColor = SystemColors.WindowText; // 描画の色は黒
xxxPanel.Location = new Point(0, 0);
xxxPanel.Size = new Size(50, 50);

webBrowser.Location = new Point(10, 10);
webBrowser.Size = new Size(180, 180);

this.ClientSize = new Size(200, 200);

(webBrowser.Controls).Add(xxxPanel);

webBrowser.ResumeLayout(false);
webBrowser.PerformLayout();

this.Controls.Add(webBrowser);

this.ResumeLayout(false);
this.PerformLayout();
}
}

class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new XXXForm());
}
}
----
1

スキルアップ/キャリアアップ(JOB@IT)