3

Visual Basicアプリでプログレスバー付きのスプラッシュ画面を実行し、その後ファイルが存在するかどうかを確認したいのですが、起動してスプラッシュ画面が表示されるとすぐにファイルチェッカーが起動するため、問題が発生します。form1スプラッシュ画面ではなく、ロード時にチェックするようにします。これが私のコードです、私はアドバイスを使うことができます:

スプラッシュ画面:

Public NotInheritable Class SplashScreen1

    'TODO: This form can easily be set as the splash screen for the application by going to the "Application" tab
    '  of the Project Designer ("Properties" under the "Project" menu).       

    Private Sub Splashscreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim Dte As DateTime = DateTime.Now
        Label2.Text = FormatDateTime(Dte, DateFormat.LongDate)

        Timer1.Start()
        Timer2.Start()

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If ProgressBar1.Value = ProgressBar1.Maximum Then
            Form1.Show()
            Me.Close()
        End If

    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        ProgressBar1.PerformStep()
    End Sub
End Class

フォーム1:

Imports System.Net
Imports System.IO
Public Class Form1
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If My.Computer.FileSystem.FileExists(Application.StartupPath & "/read me.txt") Then
            MsgBox("file found")
        Else
            MsgBox("not found")
        End If

    End Sub
End Class
4

3 に答える 3

4

Form1コードをLoadイベントからShownイベントに移動してみてください。フォームがユーザーに表示される前にロードが実行されますが、これは私が理解していることからあなたが望むものではありません。

于 2013-01-07T17:29:08.543 に答える
0

timer1_tickイベントがこの問題の原因です。Timer1はスプラッシュスクリーンのロード時に有効になり、timer_intervalによっては、form1がロードされる前に表示されない場合があります。この間にユーザーに何かを見てもらいたいですか?

プログレスバーは、アクションまたは一連のアクションが実行されていることを示します。プログレスバーを必要とする何が起こっていますか?何かが起こっているように見せたい場合は、timer1がform1がロードされる前にスプラッシュ画面が表示される時間を制御するため、timer1の間隔がtimer2の間隔よりも大きいことを確認してください。

于 2013-01-07T17:41:07.387 に答える
0
If ProgressBar1.Value = ProgressBar1.Maximum Then
      Form1.Show()
      Me.Close()
End If

への変更:

If ProgressBar1.Value = ProgressBar1.Maximum Then
      Form1.Visible = True
      Me.Visible = False
End If
于 2014-05-06T13:24:17.073 に答える