0

こんにちは私はテーブルに挿入してからすべてを読み返していますListViewプログラムを再度開くと、保存したばかりのデータがListView表示されますが、保存時にこのレコードは表示されませんListView(ただし、テーブル)。

使ってます

 listView.Update() 

と同様

 listView.Refresh() 

しかし、それは機能していないようです。SELECTクエリを使用してデータを読み取り、次のようdatareaderに保存しlistViewます(これは正しく機能しています)

唯一の問題は、listViewがすぐに更新されないことですが、プログラムを閉じたり開いたりすると機能します

これが、Saveメソッドの最後に使用しているコードです。基本的にこれらの2つのメソッドが呼び出されます

  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を相互に作成し続け(メモリリーク)、常に前のリストを表示していたことでした。静的なviewListと動的なviewListを作成しましたが、問題は解決しました: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 に答える