0

透明なパネルを自分で作成しました。

 public TransPanel()
{
}

protected override CreateParams CreateParams
{
    get
    {

        CreateParams cp = base.CreateParams;

        cp.ExStyle |= 0x00000020;

        return cp;

    }

}

protected override void OnPaint(PaintEventArgs e)
{
    if (ImageForBackGround != null)
    {
        e.Graphics.DrawImage(ImageForBackGround, new Point(0, 0));
    }
}

正常に動作しますが、.Refresh(); を実行するとコントロールが透過しなくなるという問題があります。または .Invalidate();。次に、コントロールは親と同じ色になります。BackgroundOnPaint-Event をオーバーライドしようとしましたが、うまくいきません。

 protected override void OnPaintBackground(PaintEventArgs pevent)
{

  Application.DoEvents();

}

誰かが私を助けることができますか?前もって感謝します。

4

1 に答える 1

0

私は今解決策を見つけました。Opaque を true に設定するだけです。

 protected override void OnPaint(PaintEventArgs e)
    {
        if (ImageForBackGround != null)
        {
           e.Graphics.DrawImage(ImageForBackGround, new Point(0, 0));
           this.SetStyle(ControlStyles.Opaque, true);

        }
    }
于 2013-03-11T12:43:21.050 に答える