这个程序有个窗体,一个窗体上放了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 = TrueListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear
ListView1.RefreshListView1.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).NameDim 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.RefreshEnd SubPrivate 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, 3If 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 IfEnd Sub
_________________________________________说明:在调用第二个窗体时,第一个窗体(main)已经unload me,从第二个窗体input返回时再重新main.show,但是很奇怪listview的值没有同步更新,这个为什么呢?):

解决方案 »

  1.   

    那当然了,你的第一个窗体(main)的unload ,并没有从内存中销毁所以再次显示的时候并没有调用main的Load事件
      

  2.   

    把原来的Form_Load事件中的代码贴到Form_Active 事件中就可以即时刷新了。
      

  3.   

    这样显示窗体试试:
    dim a as form
    set a=new 窗体名
    a.show
      

  4.   

    把刷新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 = TrueListView1.ColumnHeaders.Clear
    ListView1.ListItems.Clear
    ListView1.RefreshListView1.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).NameDim 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.Refreshend sub