私はOnPaint
を上書きするWinFormを持っていますが、このフォームはのMDI親です。ただしWinForm
に子供がいる場合でもOnPaint
は表示されませんか? Invalidate
とUpdate
を使用しようとしましたが、OnPaint
eatherをトリガーしませんか?OnPaintがトリガされませんでしたか?
私はPaintイベントを試しましたが、ここで同じですか?
私はOnPaint
を上書きするWinFormを持っていますが、このフォームはのMDI親です。ただしWinForm
に子供がいる場合でもOnPaint
は表示されませんか? Invalidate
とUpdate
を使用しようとしましたが、OnPaint
eatherをトリガーしませんか?OnPaintがトリガされませんでしたか?
私はPaintイベントを試しましたが、ここで同じですか?
Form.IsMdiContainer
を設定すると、実際にはMdiClient
コントロールがフォームに追加されます。子フォームは実際にはフォーム自体ではなく、MdiClientコントロール内に表示されます。フォームのペイントイベントが発生していますが、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);
}
}
次に、base.OnPaint(...)を無効にするにはどうすればよいですか? '//base.OnPaint(e);' – Rafael
OnPaintがトリガーされないと、フォームを見ることさえできます...他に何か間違っています。いくつかのコードを提供できますか? – Tigran
アプリケーションの実行中にフォーム上のコントロールを表示できる場合、OnPaintイベントが発生していることを保証できるので、間違った動作を特定していません。 –