2016-05-24 27 views
0

在我的程序(Winforms)中,我使用usercontrols作爲頁面。我按照以下方式執行此操作:Datagridview(在usercontrol上)繪製的單元格恢復爲默認樣式

我在我的Form1中加載了一個面板,我加載了usercontrols,在這些usercontrols上是我的實際控件(按鈕,標籤,複選框等)。所以實際上我使用用戶控件作爲我的表單中的「子」頁面。

usercontrols是在運行時開始聲明的,所以當我將它們加載到面板中時它們是「實時」的。這一直很好,直到昨天我遇到了一個問題。

昨天我在其中一個usercontrols上使用了一個datagridview,並且在這個控件的ParentChanged期間,我調用了一個Sub來改變這個數據網格視圖的backcollor。 (子本身是位於一個模塊中的公共子)

像這樣:

Private Sub Init_ParentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ParentChanged 
    GetRecipe(RecipeDGV, "Bla") 
End Sub 

Public Sub GetRecipe(ByVal Data As DataGridView, ByVal RecipeID As String) 
    For r As Integer = 0 To Recipe_Mem.Rows.Count - 1 
     For c As Integer = 0 To Recipe_Mem.Columns.Count - 1 

       Data(c, r).Style.BackColor = getPresetColorByID(CInt(Data(c, r).Value)) 
       Data(c, r).ToolTipText = getPresetNameByID(CInt(Data(c, r).Value)) 

     NEXT 
    NEXT 
End Sub 

當我運行我的程序,我可以看到我的DGV從數據庫中獲取數據(這恰好在同一個子)。但細胞中沒有顏色變化。

現在,我注意到的是,當我向用戶控件添加一個按鈕,並使用此按鈕的單擊事件來調用相同的顏色着色,它確實工作)。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     GetRecipe(RecipeDGV, "Bla") 
End Sub 

任何想法爲什麼這對一個按鈕單擊事件的作品,但它不在usercontrol父改變的事件?它看起來像在父變更事件期間有某種dgv重繪事件。我如何解決這個問題?

+0

簡單的刷新問題?在DGV上調用一個'Invalidate()'或者'Refresh()',或者甚至是單元格本身? – DonBoitnott

+0

試過了,它沒有工作,看起來好像Datagridview被默認的單元格樣式覆蓋 –

回答

0

您是否嘗試過在AJAX控件包裹在GridView(與上ParentChanged事件觸發器?

我,因爲它不使用被通過了「RecipeID」的說法有點疑惑。

+0

它爲了以後的目的,這個參數將被用來過濾數據庫中的數據,但是現在是不相關的。 –

+0

不,我沒有嘗試過,因爲我不知道爲什麼這不起作用第一名。我想知道在我走向任何其他方向之前會發生什麼。 –