listview为什么不刷新??????????!!!!!!!!!!!

yh1205 2004-08-25 11:01:41
这个程序有个窗体,一个窗体上放了listview控件,另外一个窗体输数据
'''''第一窗体的代码(main)
Private Sub Form_Load()
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sjk.mdb;Persist Security Info=False"
cn.Open
Set rs = New ADODB.Recordset
Dim str As String
str = "select * from 用户"
rs.Open str, cn, 1, 3

'显示网格线
ListView1.GridLines = True

ListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear
ListView1.Refresh

ListView1.ColumnHeaders.Add , , rs.Fields(0).Name
ListView1.ColumnHeaders.Add , , rs.Fields(1).Name
ListView1.ColumnHeaders.Add , , rs.Fields(2).Name
ListView1.ColumnHeaders.Add , , rs.Fields(3).Name
ListView1.ColumnHeaders.Add , , rs.Fields(4).Name
ListView1.ColumnHeaders.Add , , rs.Fields(5).Name

Dim itm As ListItem
For i = 1 To rs.RecordCount
On Error Resume Next
Set itm = ListView1.ListItems.Add(, , rs.Fields(0).Value)
itm.SubItems(1) = rs.Fields(1).Value
itm.SubItems(2) = rs.Fields(2).Value
itm.SubItems(3) = rs.Fields(3).Value
itm.SubItems(4) = rs.Fields(4).Value
itm.SubItems(5) = rs.Fields(5).Value
rs.MoveNext
Next i
ListView1.Refresh

End Sub

Private Sub Command1_Click()
unload me
input_user.show
End Sub

________________________________________________________________________________

''''''''''第二个窗体(input)

Private Sub Command1_Click()
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sjk.mdb;Persist Security Info=False"
cn.Open
Set rs = New ADODB.Recordset
Dim str As String
str = "select * from 用户 where 简称='" & Text1.Text & "'"
rs.Open str, cn, 1, 3

If rs.RecordCount = 0 Then
If Text1.Text = "" Then MsgBox "用户简称不能为空", vbExclamation + vbOKOnly, "提示": Text1.SetFocus: Exit Sub
If Text2.Text = "" Then MsgBox "用户姓名不能为空", vbExclamation + vbOKOnly, "提示": Text2.SetFocus: Exit Sub
If Text5.Text = "" Then MsgBox "用户密码不能为空", vbExclamation + vbOKOnly, "提示": Text5.SetFocus: Exit Sub
If Combo1.Text <> "标准" And Combo1.Text <> "管理" Then MsgBox "权限应为“标准”或“管理”!", vbExclamation + vbOKOnly, "提示": Exit Sub
rs.Close
str = "select * from 用户"
rs.Open str, cn, 1, 3
rs.AddNew

rs.Fields(0).Value = Text1.Text
rs.Fields(1).Value = Text2.Text
rs.Fields(2).Value = Text3.Text
rs.Fields(3).Value = Text4.Text
rs.Fields(4).Value = Text5.Text
rs.Fields(5).Value = Combo1.Text
rs.Update
rs.Close
Unload Me
input_user.Show

Else
MsgBox "简称已存在,请更换", vbCritical + vbOKOnly, "提示"
End If

End Sub


_________________________________________

说明:在调用第二个窗体时,第一个窗体(main)已经unload me,从第二个窗体input返回时再重新main.show,但是很奇怪listview的值没有同步更新,这个为什么呢?):
...全文
179 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
soothsky 2004-08-25
  • 打赏
  • 举报
回复
把刷新listview的代码写成一个函数,在Form_Load()调用然后在每次增加记录时(单击按钮时)调用一次这个过程就可以达到目的了

Private Sub pushlist()
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sjk.mdb;Persist Security Info=False"
cn.Open
Set rs = New ADODB.Recordset
Dim str As String
str = "select * from 用户"
rs.Open str, cn, 1, 3

'显示网格线
ListView1.GridLines = True

ListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear
ListView1.Refresh

ListView1.ColumnHeaders.Add , , rs.Fields(0).Name
ListView1.ColumnHeaders.Add , , rs.Fields(1).Name
ListView1.ColumnHeaders.Add , , rs.Fields(2).Name
ListView1.ColumnHeaders.Add , , rs.Fields(3).Name
ListView1.ColumnHeaders.Add , , rs.Fields(4).Name
ListView1.ColumnHeaders.Add , , rs.Fields(5).Name

Dim itm As ListItem
For i = 1 To rs.RecordCount
On Error Resume Next
Set itm = ListView1.ListItems.Add(, , rs.Fields(0).Value)
itm.SubItems(1) = rs.Fields(1).Value
itm.SubItems(2) = rs.Fields(2).Value
itm.SubItems(3) = rs.Fields(3).Value
itm.SubItems(4) = rs.Fields(4).Value
itm.SubItems(5) = rs.Fields(5).Value
rs.MoveNext
Next i
ListView1.Refresh

end sub
sssss342072 2004-08-25
  • 打赏
  • 举报
回复
我要分HOHO~~~~
rainstormmaster 2004-08-25
  • 打赏
  • 举报
回复
这样显示窗体试试:
dim a as form
set a=new 窗体名
a.show
bluesky23 2004-08-25
  • 打赏
  • 举报
回复
把原来的Form_Load事件中的代码贴到Form_Active 事件中就可以即时刷新了。
LGYAN 2004-08-25
  • 打赏
  • 举报
回复
那当然了,你的第一个窗体(main)的unload ,并没有从内存中销毁

所以再次显示的时候并没有调用main的Load事件
zhangzhijian 2004-08-25
  • 打赏
  • 举报
回复
顶上面各位的!

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧