2011-10-13 73 views
2

我有一個包含選項卡,包含一個用戶控件,包含與複選框的列表視圖的WinForform。Winforms ListView檢查負載

private void lvwRoles_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e) 
    { 
     if (!m_loading && m_locked) 
     { 
      e.NewValue = e.CurrentValue; 
      return; 
     } 

從父窗體調用的方法(在用戶控件中)爲listview分配它的項目(一些選中)。這是在父窗體加載時完成的。

我的問題是,當我第一次點擊相應的選項卡時,發生了ItemCheck。 這導致m_loading狀態變量很久以前是錯誤的。
因此,當用戶控件是m_locked時,沒有項目被檢查。

有沒有辦法解決這個問題,而不改變如何填充列表視圖?

+0

很不清楚。使用調試器,在這個方法上設置一個斷點。調用堆棧會告訴你爲什麼事件被觸發。 –

+0

@HansPassant當然,我已經嘗試過。它顯示[非用戶代碼],主要,[非用戶代碼],ItemCheck。這個事件顯然被框架推遲直到gui被加載。我的問題很清楚。 –

回答

3

從父窗體調用的方法(在用戶控件中的 )爲listview分配它的項目(一些選中)。這是在父表單的 加載完成的。

即使您在選擇該選項卡時有效觸發的父級form_load中調用該方法。在加載用戶控件後,將m_loading設置爲false,直到您選擇該選項卡後纔會發生這種情況。