簡體   English   中英

DataGridView與線程vb.net?

[英]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

https://i.stack.imgur.com/KOXRR.jpg

這是為什么您必須閱讀相關文檔的一個完美示例,特別是如果某些內容無法按您預期的方式工作時。 如果您不願意閱讀此處要調用的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 ,這意味着您可以傳遞多個單獨的對象或單個數組。 另一種選擇是將IntegerObject類型,這也將導致調用Objects數組的重載:

DataGridView1.Rows.Add(CObj(i))

調用重載方法時,將調用最接近的有效匹配項,因此請確保您的參數與要調用的重載參數匹配,並確保您了解每個重載的作用。 如果您不確定100%一定要閱讀文檔。 出現F1鍵和“幫助”菜單是有原因的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM