我可以在表格上绘制,高于所有控件吗?

Mar*_*gal 7 c# forms windows graphics draw

我可以在上面绘制所有控件form吗?
我有一些控件(textboxes,buttons,COM objects对我)form,,我要提请他们,重写他们以前绘制的任何像素.
我使用Windows FormsC#.
注意:Graphics该类在控制下绘制......

Jay*_*ggs 5

看一下本文中的代码:

绘制WinForms控件

作者创建了一个组件(如他所描述的),就像您的窗体上的一块玻璃一样。然后,您的代码将在此“玻璃”上,控件上,其覆盖的窗体等上进行绘制。

一个会影响您的严重限制是它不会覆盖某些控件(包括TextBox)。本文中描述了这些限制(以及它们的原因),但是本文中的代码可能正是您要寻找的(或者可以用作您自己的解决方案的起点)。


Noo*_*001 0

我知道我在游戏中已经太晚了,并且接受的答案没有任何问题,但我发现它太复杂并且难以理解,所以我想出了一个“hack”。

Panel1.使用以下代码进行自定义。

public class TransparentPanel : Panel
{
    protected override void OnPaint(PaintEventArgs e)
    {
        
    }

    protected override void OnPaintBackground(PaintEventArgs e)
    {
        
    }

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT

            return cp;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

2.在 上当前的每个控件上创建一个TransparentPanel与 完全相同大小的, ,将其置于最前面,并将其设置为,到。FormFormBackColorTransparentEnablefalse

3. 现在,您在其中绘制的所有内容OnPaint都将绘制在任何控件的“上方”,并且不会“阻止”任何可交互的控件,例如TextBox