Di seguito il tuo codice e miei commenti su quello che penso... si possa migliorare.Originariamente inviato da diagre
Ciao!
Ieri ho avuto modo di andare avanti sul "progetto" e posso dire che sono molto contento di come è uscito.
Ho riletto più volte quello che mi hai scritto e ho cercato di mettere in pratica sia la tua idea che la mia e alla fine sono riuscito a creare le tanto agognate cartelle!
il codice è questo:
.....
Ha un pò di imperfezioni che però oggi pensavo di risolvere,tipo quella famosa variabile percorso1 che vado ad impostare e che non serve a una beata cippa se non ai miei trip mentali!
codice:Imports System ' non serve Imports System.IO Imports System.Collections ' non serve Imports System.Windows.Forms ' non serve Public Class Form1 Private Sub Form1_Load() Handles MyBase.Load ' ComboBoxStyle.DropDownList si può impostare in "modalità progettazione" della form e quindi ' si possono eliminare le due righe sotto. Seleziona la combobox, nella finesta "proprietà" trova ' la voce dropdownstyle e seleziona dropdownlist. ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList ComboBox2.DropDownStyle = ComboBoxStyle.DropDownList Dim tipo_drive As String For a = 0 To My.Computer.FileSystem.Drives.Count - 1 Step 1 tipo_drive = My.Computer.FileSystem.Drives(a).DriveType.ToString Select Case tipo_drive Case "Network" ComboBox1.Items.Add(My.Computer.FileSystem.Drives(a).ToString) End Select Next ComboBox2.Items.Add("Immagini") ComboBox2.Items.Add("Video") End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click ' la riga sotto devi inserirla dopo i controlli sulle combobox e la textbox perchè ' dichiarandola in questo punto prende i valori vuoti se il programma è appena avviato ' altrimenti, se hai già usato il programma, prende i valori già usati che non servono ' visto che le cartelle sono già state create... ' Non cambia niente ma penso sia più corretto inserirla come nel mio post precedente ' per evitare un operazione che può risultare inutile se i controlli sono positivi Dim percorso As String = ComboBox1.SelectedItem & TextBox1.Text ' la riga sotto puoi eliminarla sostituendo "percorso1" con "percorso" Dim percorso1 As String = percorso ' le due variabili non servono... ' Select Case ComboBox2.SelectedItem prende in considerazione il testo selezionato ' quindi puoi scrivere direttamente "Immagini" al posto di Img e "Video" al posto ' di Img Dim Img = "Immagini" Dim Vid = "Video" If ComboBox1.SelectedItem = "" Then MsgBox("Selezionare un unità di rete") Return Else If TextBox1.Text = "" Then MsgBox("Inserire il nome della cartella") Return Else If ComboBox2.SelectedItem = "" Then MsgBox("Seleziona il tipo di lavoro") Return End If End If End If Try If Directory.Exists(percorso1) = False Then Directory.CreateDirectory(percorso1) MsgBox("Cartella creata!") Else If Directory.Exists(percorso1) = True Then MsgBox("La cartella è già esistente!") End If End If Catch ex As Exception Console.WriteLine("Processo Fallito", ex.ToString()) End Try ' Volendo puoi gestire sotto_cartelle, nel senso che se pensi di voler ' modificare le cartelle da creare senza mettere mano a questo codice ' puoi creare la classica "finestra" Impostazioni e fare delle modifiche. Dim sotto_cartelle As New ArrayList Select Case ComboBox2.SelectedItem Case Img sotto_cartelle.Add("imgTest") sotto_cartelle.Add("imgDef") sotto_cartelle.Add("renderassets") Case Vid sotto_cartelle.Add("scene") sotto_cartelle.Add("maps") sotto_cartelle.Add("docs") sotto_cartelle.Add("xref") sotto_cartelle.Add("proxy") sotto_cartelle.Add("models") sotto_cartelle.Add("containers") sotto_cartelle.Add("imgTest") sotto_cartelle.Add("renderpresets") sotto_cartelle.Add("renderassets") sotto_cartelle.Add("reference") sotto_cartelle.Add("editing") sotto_cartelle.Add("post") End Select Try Directory.CreateDirectory(percorso) For a = 0 To sotto_cartelle.Count - 1 Step 1 Directory.CreateDirectory(percorso & "\" & sotto_cartelle(a)) Console.WriteLine("creato percorso: " & percorso & "\" & sotto_cartelle(a)) Next Catch ex As Exception MsgBox("Si è verificato un errore:" & vbCrLf & ex.Message) sotto_cartelle = Nothing Return End Try End Sub End ClassDipende da come vuoi presentare le scelte...ad esempio, per il punto 1, puoi usare due radiobutton per la scelta "nuova" o "esistente" e il classico "sfoglia", quindi agire di conseguenza. Oppure sostituire la textbox con una combobox in cui aggiungi "nuova cartella" e poi tutte le cartelle presenti sul drive selezionato, poi, in base alla selezione si esegue il codice adatto.Pensavo però di implementare due funzioni:
1.Alla selezione dell'unità di rete dare la possibilità di:
- A) Scegliere di creare una nuova cartella col nome del textbox
- B) Scegliere una delle cartelle presenti (su quell'unità di rete) e creare la cartella col nome del textbox (all'interno della cartella scelta prima)
2.La possibilità di avere un Browse folder (oltre alla scelta dell'unità)
Riusciresti a linkarmi qualcosa per capire almeno da dove iniziare?
ti ringrazio ancora!
Ciau
Puoi iniziare a dare uno sguardo qui per sfogliare le cartelle:
http://msdn.microsoft.com/it-it/libr...serdialog.aspx
http://msdn.microsoft.com/it-it/library/xca5d950.aspx
PS: a primo impatto c' ero diventato scemo...non guardare public ecc...basta che aggiungi il controllo e scrivi l' if all' interno di un evento es. al click di un button.


Rispondi quotando
