[英]DataGridView with thread vb.net?
**當我在線程上使用DataGridView1時出現問題,我得到像圖像一樣的空行**
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim thread As New Thread(AddressOf grid)
thread.Start()
End Sub
Public Function grid()
For i As Int16 = 1 To 50
Invoke(Sub()
DataGridView1.Rows.Add(i)
DataGridView1.Refresh()
End Sub)
Next
End Function
這是為什么您必須閱讀相關文檔的一個完美示例,特別是如果某些內容無法按您預期的方式工作時。 如果您不願意閱讀此處要調用的Add
方法的文檔,那么您會發現特定的重載將特定數量的行添加到網格中,僅此而已。 它絕不會用任何數據填充這些行。 您擁有的代碼將向網格中添加1 + 2 + 3 + 4 + ... + 48 + 49 + 50空行。 如果您真正想要的是每次在該行中顯示的數據是i
時候添加一行,那么您需要調用Add
的重載之一,否則,請調用不帶參數的重載來添加一行,然后獲取該行並顯式設置單元格的Value
。
編輯:最簡單的以i
作為數據添加行的方法是調用采用單元格值數組的Add
的重載。 如果只有一個單元格,則使用具有一個元素的數組:
DataGridView1.Rows.Add({i})
大括號表示內容是數組。 它的簡寫形式:
DataGridView1.Rows.Add(New Integer() {i})
請注意,如果傳遞單個Integer
,則將調用具有單個Integer
參數的重載,因為它是最接近的匹配項。 如果要傳遞多個離散Integers
,例如
DataGridView1.Rows.Add(i, i)
那么您將不會遇到相同的問題,因為沒有多個Integer
參數的重載。 在這種情況下,將調用采用Objects
數組的重載。 該重載的參數聲明為ParamArray
,這意味着您可以傳遞多個單獨的對象或單個數組。 另一種選擇是將Integer
為Object
類型,這也將導致調用Objects
數組的重載:
DataGridView1.Rows.Add(CObj(i))
調用重載方法時,將調用最接近的有效匹配項,因此請確保您的參數與要調用的重載參數匹配,並確保您了解每個重載的作用。 如果您不確定100%一定要閱讀文檔。 出現F1鍵和“幫助”菜單是有原因的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.