vb.net доступ к папке запрещен - PullRequest
0 голосов
/ 27 сентября 2018

Я везде искал эту ошибку, изменив файл манифеста программы для запуска от имени администратора, но ничего не изменилось, я создаю программу для себя, чтобы получить ссылки на потоковое видео, где я поместил первую ее часть в текстовое поле 1, а вторую -часть в textbox2, они соединяются, и добавляется номер для эпизода, но когда я пытаюсь сохранить текстовый файл со всеми ссылками, я не могу сохранить его, потому что доступ запрещен.

Imports System
Imports System.IO
Imports System.Text

Public Class Form1
    Dim l1 As String
    Dim l2 As String
    Dim ep As Integer
    Dim nEp As Integer
    Dim testo As String
    Dim path As String

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Label4.Text = "Link:" & vbCrLf
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        l1 = CStr(TextBox1.Text)
        l2 = CStr(TextBox2.Text)
        nEp = CInt(TextBox3.Text)

        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""

        If l1 <> "" And l2 <> "" And IsNumeric(nEp) Then
            If ep <= 9 Then
                For ep = 0 To 9
                    Label4.Text = Label4.Text + l1 & "0" & ep & l2 & vbCrLf
                Next
                If ep > 9 Then
                    For ep = 10 To nEp
                        Label4.Text = Label4.Text + l1 & ep & l2 & vbCrLf
                    Next
                    testo = Label4.Text
                    FolderBrowserDialog1.RootFolder = Environment.SpecialFolder.DesktopDirectory
                    If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                        path = FolderBrowserDialog1.SelectedPath
                    End If
                    File.Create(FolderBrowserDialog1.SelectedPath).Dispose()
                    File.WriteAllText(FolderBrowserDialog1.SelectedPath, testo)
                End If
                End If
        Else
            MsgBox("Inserisci i dati correttamente!")
        End If


    End Sub

End Class

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Большая вещь, которую я увидел, это использование SaveFileDialog вместо FolderBrowserDialog .Но вы можете очистить и многое другое:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim ep As Integer 
    If String.IsNullOrWhitespace(TextBox1.Text) OrElse 
       String.IsNullOrWhitespace(TextBox2.Text) OrElse
       Not Integer.TryParse(TextBox3.Text, ep) Then

        MsgBox("You need to fill the requested inputs!")
        Exit Sub
    End If

    Dim sfd As New SaveFileDialog()
    sfd.InitialDirectory = Environment.SpecialFolder.DesktopDirectory
    If sfd.ShowDialog() <> Windows.Forms.DialogResult.OK Then Exit Sub

    Dim names() As String = 
        Enumerable.Range(1, ep).
            Select(Function(e) String.Format("{0}{1:00}{2}{3}", TextBox1.Text, e, TextBox2.Text, vbCrLf)).
            ToArray()
    Dim result As String = String.Join("", names)

    Label4.Text &= result
    File.WriteAllText(sfd.FileName, Label4.Text)

    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
End Sub

Суть метода в следующем коде:

Enumerable.Range(1, ep).
    Select(Function(e) String.Format("{0}{1:00}{2}{3}", TextBox1.Text, e, TextBox2.Text, vbCrLf)).
    ToArray()

Используется Enumerable.Range() функция для генерации последовательности целых чисел от 1 до количества эпизодов, проанализированных ранее в переменную ep из TextBox3.Затем он использует функцию IEnumerable<T>.Select(), чтобы создать проекцию этих чисел на нужные строки.Select() принимает аргумент делегата , который был представлен здесь как лямбда-выражение .Это лямбда-выражение использует String.Format(), чтобы соединить каждую строку.В частности, номер эпизода помещается в заполнитель {1:00}, где часть :00 представляет собой строку формата , чтобы гарантировать как минимум две цифры.Затем мы вызываем .ToArray(), чтобы свернуть все в структуру, которая будет совместима с String.Join().

0 голосов
/ 27 сентября 2018

Мне удалось заставить его работать, но если я хочу использовать его снова, не закрывая форму, кнопка ничего не делает.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    l1 = CStr(TextBox1.Text)
    l2 = CStr(TextBox2.Text)
    nEp = CInt(TextBox3.Text)
    nomeFile = CStr(TextBox4.Text)

    If l1 <> "" And l2 <> "" And IsNumeric(nEp) Then
        If nomeFile <> "" Then
            If ep <= 9 Then
                For ep = 0 To 9
                    Label4.Text = Label4.Text + l1 & "0" & ep & l2 & vbCrLf
                Next
                If ep > 9 Then
                    For ep = 10 To nEp
                        Label4.Text = Label4.Text + l1 & ep & l2 & vbCrLf
                    Next
                    testo = Label4.Text
                    If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                        path = FolderBrowserDialog1.SelectedPath + "\" + nomeFile + ".txt"
                    End If
                    File.Create(path).Dispose()
                    File.WriteAllText(path, testo)
                    MsgBox("File created")

                    TextBox1.Text = ""
                    TextBox2.Text = ""
                    TextBox3.Text = ""
                    TextBox4.Text = ""
                    Label4.Text = ""
                End If
            End If
        Else
            MsgBox("File name missing")
        End If
    Else
        MsgBox("You need to fill the requested inputs!")
    End If


End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...