- - PR -
WebBrowserコントロールの上に他のコントロールを表示するには
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