1

Load時にモジュールからいくつかのコードを実行するwinFormがあります。コードの実行中にフォームを一番上に置いておきたいのですが、フォームには進行状況バーが含まれているため、ユーザーが進行状況を確認することが不可欠です。

TopMost=Trueフォームをとに設定しましたShowDialog

私が抱えている問題は、手順が作業を実行している間、フォームが表示されないことです。昔の VBARepaintでは、この問題を修正していましたが、VB.net にはそのようなオプションがありません。私はいくつかの調査を行い、さまざまな場所で を使用していましInvalidateたが、そこにも何もありませんでした。

フォームが消えるのを防ぎ、コードの実行中にフォームが一番上に残るようにするにはどうすればよいですか。

 Private Sub frmDataImportSplash_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim intProgressWidth As Integer = 214
        Dim intProgress As Integer = 0

        'Before procedures perform the following checks:
        'Check to see if Cancel has been clicked

        'Set the lblProgressBar width to 0
        'Change the lblPctCompleted caption to 0% Completed
        'Change the lblStatus Caption to Importing Files
        'Display the lblStats

        checkCancel(Cancel:=False)

        Me.prgStatus.Width = 0
        Me.lblPctCompleted.Text = "0% Completed"
        Me.lblStatus.Text = "Preparing Imports"
        Me.lblStatus.Visible = True


        checkCancel(Cancel:=False)
        Me.Invalidate()
        Me.prgStatus.Width = 20
        intProgress = (Me.prgStatus.Width / intProgressWidth) * 100
        Me.lblPctCompleted.Text = intProgress & "% Completed"
        Me.Invalidate()

'Here is where my form dissapears
        formatModule.importSheets()

        checkCancel(Cancel:=False)
        Me.Invalidate()
        Me.prgStatus.Width = 60
        intProgress = (Me.prgStatus.Width / intProgressWidth) * 100
        Me.lblPctCompleted.Text = intProgress & "% Completed"
        Me.Invalidate()
        formatModule.prepareExports()

End Sub

End Class
4

1 に答える 1

1

フォームが表示される前に発生する Form_Load イベントでこれを行います。このコードを form_shown イベントに移動できます。次に、フォームがユーザーに表示された後にコードが実行されます。

于 2013-10-05T23:23:05.260 に答える