C#问题与FlowLayoutPanel内的自定义面板

时间:2012-01-08 08:12:48

标签: c# custom-controls override panel flowlayoutpanel

如果您需要更多详细信息,请与我们联系。

我正在为媒体(图片,视频,文件夹)创建缩略图视图,就像文件的Windows视图一样。

我正在使用 FlowLayoutPanel 来保存缩略图。每个缩略图都有面板 PictureBox 标签

我希望能够更改边框的颜色/格式。我重写了Panel的OnPaint,并在那里添加了一些代码。

现在问题就在于此。 OnPaint覆盖不会被调用。从来没有。所以我的彩色边框根本没有显示出来。如果我将一个拖到窗体上它渲染得很好,则会调用覆盖...所以它必须与FlowLayoutPanel有关。

自定义面板:

public class MediaPanel : System.Windows.Forms.Panel
{
    public MediaPanel()
    {
        this.SetStyle(ControlStyles.AllPaintingInWmPaint
            | ControlStyles.UserPaint
            | ControlStyles.OptimizedDoubleBuffer
            | ControlStyles.ResizeRedraw, true);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, 
            Color.Red, ButtonBorderStyle.Solid);
    }
}

如果我遗漏了任何信息或者我没有清楚地解释我的问题,请告诉我。

感谢。

0 个答案:

没有答案