@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

大量のInsert文を実行中にLabelのtextを変更したい

1
投稿者投稿内容
chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-11-18 14:54
VB2005です。
フォームを読み込んだときにDataGridViewに20,000件ほどのデータを表示させています。
ButtonをクリックしたときにDataGridViewに表示しているデータをDo - Loop文で全件Insertしています。

このときInsertの処理に時間がかかるので、処理中はLabel1のtextに「処理中」とし
処理が終わったらLabel1に「終了」と表示させたいのですが
ButtonをクリックしてもLabel1のtextは変わらず(この間はDataGridViewがフリーズ?している)
処理が終わったらLabel1は「終了」となります。ソースは下記の通りです。

コード:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
        Label1.Text = "処理中"

        Dim r As Integer = 0
        Do While r < DataGridView1.RowCount
            
        -- Insert文実行処理 --
            r = r + 1
        Loop

        Label1.Text = "終了"
    End Sub


処理中の間だけLabelのtextを変更するのはどうすればよいのでしょうか?
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-11-18 15:05
Label1.Text = "処理中"
の直後に
Application.DoEvents()
を挿入するとどうでしょうか。
chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-11-18 15:13
引用:

Kingさんの書き込み (2008-11-18 15:05) より:
Label1.Text = "処理中"
の直後に
Application.DoEvents()
を挿入するとどうでしょうか。


できましたorz
これだけでよかったとは・・・勉強不足過ぎですね。
Kingさんありがとうございました。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-11-18 15:43
すみません。
状況によっては
Label1.Update()
した方が安全かもしれません。

http://dobon.net/vb/dotnet/programing/displayprogress.html
nakaP
大ベテラン
会議室デビュー日: 2005/09/27
投稿数: 138
お住まい・勤務地: 高知
投稿日時: 2008-11-18 16:51
参考までに。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=44349&forum=7
1

スキルアップ/キャリアアップ(JOB@IT)