0

嗨,ListView我正在插入表格然后将所有内容读回桌子)。ListViewListView

我在用

 listView.Update() 

 listView.Refresh() 

但它似乎不起作用。我只是使用SELECT查询来读取数据datareader并将其存储在我listView的如下(正常工作)

唯一的问题是 listView 没有立即刷新,但是当我关闭/打开程序时它可以工作

这是我在 Save 方法末尾使用的代码。基本上这两种方法被调用

  Private Sub SetColumns()
    Dim lstpenalty As New ListView()
    lstpenalty.Items.Clear()
    lstpenalty.Visible = True
    lstpenalty.Bounds = New Rectangle(New Point(390, 55), New Size(560, 379))
    lstpenalty.Name = "lstpenalty"
    lstpenalty.FullRowSelect = True


    lstpenalty.View = View.Details
    lstpenalty.GridLines = True


    lstpenalty.Items.Clear()


    lstpenalty.Columns.Add("a", 75)
    lstpenalty.Columns.Add("b", 70)
    lstpenalty.Columns.Add("c", 105)
    lstpenalty.Columns.Add("d", 98)
    lstpenalty.Columns.Add("e", 90)
    lstpenalty.Columns.Add("f", 105)
    Me.Controls.Add(lstpenalty)



    LoadPenaltyList(lstpenalty)

End Sub

Private Sub LoadPenaltyList(ByRef listView As ListView)

    Dim gDR As OracleDataReader
    Dim cmd As New OracleCommand
    Dim lstpenaltyview As New ListViewItem

    Try

        cnn.Connect_to_Oper_Agent()
        cmd.Connection = cnn.cnn

        listView.Items.Clear()


        cmd.CommandText = " select a," & _
                          "b, " & _
                          "c, " & _
                          "d," & _
                          "e," & _
                          "f" & _
                          " FROM myTable" & _
                          " commit"

        gDR = cmd.ExecuteReader()


        While gDR.Read

            lstpenaltyview = listView.Items.Add(Null_To_String(gDR("a")))
            lstpenaltyview.SubItems.Add(gDR("b"))
            lstpenaltyview.SubItems.Add(gDR("c"))
            lstpenaltyview.SubItems.Add(gDR("d"))
            lstpenaltyview.SubItems.Add(gDR("e"))
            lstpenaltyview.SubItems.Add(gDR("f"))

        End While

        listView.Update()



    Catch ex As Exception
        MsgBox("There was an error... -> " & ex.ToString)

    Finally
        cmd.Dispose()
        cnn.Close_Conn()

    End Try


End Sub

谢谢你的帮助

4

3 回答 3

0

值得一看的是什么方法。

http://msdn.microsoft.com/en-us/library/system.windows.forms.listview_methods%28v=vs.71%29.aspx

更新:使控件重绘其客户区内的无效区域。

刷新:强制控件使其客户区无效并立即重绘自身和任何子控件。

要使用表信息更新它,首先清除列表视图,然后重做最初填充它的过程。

于 2013-03-15T14:05:37.707 回答
0

所以我正在动态创建 ListView。问题是它不断地在彼此之上创建 ListView(内存泄漏),并且总是显示前一个。我创建了一个静态视图列表与一个动态视图列表,问题已解决:D

于 2013-03-18T19:57:57.253 回答
-2

利用

For Each i As Windows.Forms.ListViewItem In ListView1.Items
   i.Remove()
Next

代替Clear

于 2015-11-04T21:42:56.090 回答