您好,我正在插入一个表,然后将所有内容读回ListView当我重新打开程序时,我看到我刚刚保存在我的ListView中的数据,但保存时这条记录没有显示在我的ListView中(尽管它保存在表中)。
我正在使用
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谢谢你的帮忙
发布于 2013-03-19 03:57:57
所以我动态地创建了ListView。问题是它不断地在彼此之上创建ListViews (内存泄漏),并且总是显示前一个。我创建了一个静态viewList,而不是动态的,这个问题已经解决了:d
发布于 2013-03-15 22:05:38
值得一看的是方法的作用。
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview_methods%28v=vs.71%29.aspx
Update :使控件在其工作区内重新绘制无效区域。
刷新:强制控件使其工作区无效,并立即重新绘制自身和任何子控件。
要使用表信息对其进行更新,请首先清除列表视图,然后重新执行最初填充它的过程。
发布于 2015-11-05 05:42:56
使用
For Each i As Windows.Forms.ListViewItem In ListView1.Items
i.Remove()
Next代替Clear
https://stackoverflow.com/questions/15434287
复制相似问题