2

詳細が必要な場合はお知らせください。

ファイルのウィンドウ ビューのように、メディア (画像、ビデオ、フォルダー) のサムネイル ビューを作成しています。

サムネイルを保持するためにFlowLayoutPanelを使用しています。各サムネイルのPanelPictureBox、およびLabel 。

境界線の色/形式を変更できるようにしたかったのです。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);
    }
}

情報が不足している場合や、問題を十分に説明していない場合はお知らせください。

ありがとう。

4

0 に答える 0