2013-05-15 44 views
9

Tôi biết có UserControl.Load, xảy ra trước khi điều khiển hiển thị lần đầu tiên. Và tôi biết có UserControl.HandleCreated, xảy ra khi xử lý được tạo cho điều khiển.Sự kiện nào xảy ra ngay sau khi điều khiển được hiển thị lần đầu tiên?

Nhưng tôi đang tìm kiếm sự kiện nào xảy ra khi kiểm soát thực sự được hiển thị lần đầu tiên.

Lý do:

Tôi đang làm việc với một DataGridView trong đó có một loạt các dữ liệu đưa vào nó trước khi điều khiển được hiển thị. Tôi không thể tô màu các hàng (BackColor) mà không kiểm soát được sơn (các lệnh đơn giản là không hoạt động). Các lệnh cho các hàng màu chỉ hoạt động khi điều khiển đã được vẽ lần đầu tiên. Vì vậy, tôi cần phải nắm bắt sự kiện đó và tô màu các hàng tại điểm đó.

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

Dòng trên hoạt động khi điều khiển được hiển thị nhưng không hoạt động với điều khiển không được hiển thị.

+0

Bạn đã thử sự kiện 'RowPrePaint' hoặc' RowPostPaint' chưa? – MikeB

+0

không hoàn toàn chắc chắn, nhưng tôi muốn giới thiệu http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.databindingcomplete.aspx sự kiện DataBindingComplete. Vì nó cũng xử lý các sự kiện thay đổi kích thước tùy thuộc vào nội dung, nên (imho) này làm việc vor bức tranh của bạn như là – Najzero

+1

Tại sao bạn không thể ghi đè lên 'OnPaint'? – mattytommo

Trả lời

7

Bạn có thể sử dụng sự kiện VisibleChanged.

private void UserControl_VisibleChanged(object sender, EventArgs e) 
{ 
    if (this.Visible) { ... } 
    else { ... } 
} 
Các vấn đề liên quan