它不会在com组件之上绘制

时间:2010-06-30 07:47:43

标签: c# winforms

我有一个来自我们供应商的图形化组件。我把它放在主要形式,并想在它上面绘制。但MainForm_paint不会在该组件上方绘制。有没有办法在该组件上方绘画?

C#,WinForms,2.0

代码:

    void MainForm_Paint(object sender, PaintEventArgs e)
    {
            using (SolidBrush b2 = new SolidBrush(Color.Red))
            {
                e.Graphics.FillRectangle(b2, this.ClientRectangle);
            }

            Pen pen = new Pen(Color.Black, 2.0f);
            e.Graphics.DrawLine(pen, 0, 0, 100, 100);
            pen.Dispose();
    }

它没有填充任何内容,也没有画线。 ComComponent.DockStyle = DockStyle.Fill

2 个答案:

答案 0 :(得分:0)

你无法在组件上方绘制。 ActiveX有自己的Paint消息。如果Paint事件在您的容器(winform)中可见,您可以覆盖它。

答案 1 :(得分:0)

如果您可以将控件的背景设置为透明,请执行此操作。否则,可能会对控件的窗口进行子类化并忽略WM_ERASEBKGND(或其他任何名称)。

或者,如果您确切知道要绘制的位置,可以在ActiveX控件上方放置一个非矩形窗口。

修改:添加了最后一条建议