1

をオーバーライドするWinFormがあります。OnPaintこのフォームは、MDIの親です。ただし、子供と一緒に表示されてOnPaintもトリガーされませんか?WinForm私は使用しようとしInvalidateましたUpdateが、イーザーをトリガーしませんOnPaintか?

Paintイベントを試しましたが、ここでも同じですか?

何か案が?

4

1 に答える 1

2

を設定するForm.IsMdiContainerと、実際にMdiClientはフォームにコントロールが追加されます。子フォームは、フォーム自体ではなく、実際にはMdiClientコントロール内に表示されます。フォームのPaintイベントが発生していますが、MdiClientがフォームにドッキングされているため、フォームは表示されません。代わりに、MdiClientのペイントイベントにアクセスする必要があります。

public partial class Form1 : Form
{
    public Form1() {
        InitializeComponent();

        mdiClient = Controls[0] as MdiClient;

        if (mdiClient != null) {
            mdiClient.Paint += OnMdiClientPaint;
        }
    }

    private MdiClient mdiClient;

    private void OnMdiClientPaint(object sender, PaintEventArgs e) {
        e.Graphics.FillRectangle(Brushes.Blue, mdiClient.ClientRectangle);
    }
}
于 2012-04-19T13:40:54.693 に答える