Ich möchte ein Fenster-Control in Sprechblasform als UserControl erstellen.
Dazu habe ich die Klasse Form abgeleitet, Transparenz gesetzt, Fensterrand entfernt und meine Sprechblase gezeichnet (OnPaint-Methode überschrieben).
Jetzt habe ich noch ein Panel hinzugefügt, wo man dann später die Controls in der Sprechblase platzieren soll (notwendig, weil sonst beim platzieren der Controls die Elemente nicht an den richtigen Rändern einrasten).
Wenn ich jetzt aber das UserControl nutzen möchte, dann ist das Panel geblockt. Ich kann im Panel keine Elemente platzieren, sondern nur drum herum.
Hier ein Screenshot:
http://img529.imageshack.us/f/panelproblem.png/
Quellcode:
public partial class BubbleForm : System.Windows.Forms.Form
{
public BubbleForm()
{
InitializeComponent();
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.TransparencyKey = SystemColors.Control;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Point p1 = new Point(10, 0);
Point p2 = new Point(this.Width-1, 0);
Point p3 = new Point(this.Width - 1, this.Height - 1);
Point p4 = new Point(10, this.Height - 1);
Point arrorHead = new Point(0, (int)((double)this.Height \* 0.30));
Point aTopCorner = new Point(10, arrorHead.Y - 10);
Point aBottomCorner = new Point(10, arrorHead.Y + 10);
Point[] form = new Point[7];
form[0] = p1;
form[1] = p2;
form[2] = p3;
form[3] = p4;
form[4] = aBottomCorner;
form[5] = arrorHead;
form[6] = aTopCorner;
e.Graphics.FillPolygon(SystemBrushes.Info, form);
e.Graphics.DrawPolygon(Pens.Red, form);
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
this.panel1.Location = new Point(11, 1);
this.panel1.Size = new Size(this.Width - this.panel1.Location.X - 1, this.Height - this.panel1.Location.Y - 1);
}
}
Wie kann ich dieses Problem lösen?