2013-05-15 10 views
9

UserControl.Loadがあります。コントロールが最初に表示される前に発生します。コントロールのハンドルが作成されたときに発生するUserControl.HandleCreatedがあることがわかりました。初めてコントロールが表示された直後にどのようなイベントが発生しますか?

しかし、コントロールが初めて実際に表示されたときに、どのようなイベントが発生するのかを探しています。

理由:

私はコントロールが表示される前に、それに入れたデータの束を持っているDataGridView取り扱っております。私は行(BackColor)を塗りつぶさずに色付けすることはできません(コマンドは単に動作しません)。行を色付けするコマンドは、初めてコントロールがペイントされた後にのみ機能します。だから私はそのイベントをキャプチャし、その時点で行を色分けする必要があります。

dataGridView1.Rows[index].DefaultCellStyle.BackColor = Color.Red; 

上記の行は、コントロールが表示されたときに動作しますが、コントロールが表示されていないと動作しません。

+0

'RowPrePaint'または' RowPostPaint'イベントを試しましたか? – MikeB

+0

私は、DataBindingCompleteイベントhttp://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.databindingcomplete.aspxをお勧めしたいと思います。内容に応じてサイズ変更イベントも処理するので、これは(imho)あなたのペインティングにも役立つはずです – Najzero

+1

なぜ 'OnPaint'をオーバーライドできませんか? – mattytommo

答えて

7

イベントはVisibleChangedです。

private void UserControl_VisibleChanged(object sender, EventArgs e) 
{ 
    if (this.Visible) { ... } 
    else { ... } 
} 
関連する問題