Форма Windows исчезает из-за проблемы VB.Net - PullRequest
0 голосов
/ 15 декабря 2018

У меня проблема с эффектом затухания формы Windows.Эта форма должна прочитать значение файла и сохранить его в переменной, а затем запустить таймер, который должен увеличить непрозрачность формы до считанного значения, но этого не происходит.

Я пробовал два методачтобы сохранить значение в переменной, первое:

If My.Computer.FileSystem.FileExists(Application.StartupPath & "\Users\" & My.Settings.username & "\opacity.goodsetting") Then
        Try
            Using read As New StreamReader(Application.StartupPath & "\Users\" & My.Settings.username& "\opacity.goodsetting")
                If read.ReadLine = "50" Then
                    varOpacity = 0.5
                ElseIf read.ReadLine = "60" Then
                        varOpacity = 0.6
                ElseIf read.ReadLine = "70" Then
                        varOpacity = 0.7
                ElseIf read.ReadLine = "80" Then
                        varOpacity = 0.8
                ElseIf read.ReadLine = "90" Then
                        varOpacity = 0.9
                ElseIf read.ReadLine = "100" Then
                        varOpacity = 1
                End If
                read.Close()
                End Using
        Catch ex As Exception
            varOpacity = 1
            Me.Opacity = 1
        End Try
End If
Timer2.Start()

и второе:

Try
    varOpacity = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Users\" & My.Settings.username & "\opacity.goodsetting")
    Me.Opacity = varOpacity / 100
Catch ex As Exception
    varOpacity = 1
    Me.Opacity = 1
End Try

, но ни один из методов не работает.

Я также оставляю код эффекта:

Me.Opacity = Me.Opacity + 0.1
If Me.Opacity = varOpacity Then
    Timer2.Stop()
End If

Спасибо всем.

1 Ответ

0 голосов
/ 16 декабря 2018

Вот пример того, что, я думаю, вы хотите ... Я пытался сохранить его как можно ближе к вашему первоначальному примеру.В целях тестирования я поместил код в Form_Load и добавил таймер.Надеемся, что вы сможете протестировать и изменить свои собственные потребности.

Для формы необходимо установить Opacity в 0 в конструкторе.Код будет постепенно изменяться от 0 до значения, хранящегося в файле, в противном случае по умолчанию будет 1.

Код имеет импорт System.IO

Private varOpacity As Double

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

    'Set the path just once.
    Dim pathOpacityLimit As String = Path.Combine(Application.StartupPath & "\Users\" & My.Settings.username, "opacity.goodsetting")
    If File.Exists(pathOpacityLimit) Then
        Try
            Using read As New StreamReader(pathOpacityLimit)
                If Double.TryParse(read.ReadLine, varOpacity) Then
                    'Value parsed - changed to 0.0 > 1.0 so inline with Me.Opacity. Start timer.
                    varOpacity /= 100
                    Timer2.Start()
                Else
                    'Incorrect (not parsed) value in file - set default
                    Me.Opacity = 1
                End If
                read.Close()
            End Using
        Catch ex As Exception
            'Exception - set default
            Me.Opacity = 1
        End Try
    Else
        'File doesn't exist - set default
        Me.Opacity = 1
    End If
End Sub

Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    Me.Opacity += 0.1
    If Me.Opacity < varOpacity Then Exit Sub
    Me.Opacity = varOpacity
    Timer2.Stop()
End Sub

Надеюсь, этого достаточно для начала работы.Вы также можете проверить сохраненное значение, чтобы убедиться, что оно попадает в требуемый диапазон от 0 до 100.

...