Domanda

Ho un progetto WinForm che elenca tutti i file in una cartella specificata. Esso consente all'utente di selezionare una nuova destinazione per ogni file, e quando l'utente ha scelto le destinazioni per tutti i file che vorrebbe essere spostato, si sposta i file, uno per uno.

Il mio prossimo passo è, ho bisogno di visualizzare un modulo di conferma quando i file vengono spostati, e aggiungere il nome e la destinazione di ogni file per il modulo di conferma mentre viene spostato.

La mia domanda è: Come posso aggiungere altro testo ai controlli del form di conferma dopo che ho già caricato (usando confirm.showdialog() dalla mia altra forma, senza alcuna interazione da parte dell'utente? Immagino che ho bisogno di farlo dalla forma originale, perché ha bisogno di visualizzare ogni uno quando si inizia a spostare il file, ma sono aperto a qualsiasi suggerimento:)

TIA

È stato utile?

Soluzione

Sia risposte di cui sopra sono buone.

Se ho capito bene, il modulo principale permettere di selezionare più file, quindi selezionare la destinazione e avviare il processo di spostamento. Se questo è quello che vi serve, vorrei semplicemente fare quanto segue:

  1. Crea un nuovo modulo che avrebbe riferito il processo per l'utente, senza richiedere alcuna interazione, ma solo per informare l'utente che cosa file sia spostato;
  2. Creare un'istanza di un oggetto BackgroundWorker, e chiamare il metodo di file-move dal BackgroundWorker.DoWork () il metodo (nel modulo principale);
  3. Bandiera tuo BackgroundWorker segnalare il progresso, quindi chiamare il gestore BackgroundWorker.ReportProgress () evento dal tuo metodo di spostamento file;
  4. Utilizzare l'elenco creato in precedenza di nomi di file per ottenere il suo nome e segnalarlo al dialogo sotto forma di file-move, mentre il file viene modificato. Un semplice DataBinding nel corso di un etichetta dovrebbe fare il trucco mentre si sposta il CurrencyManager alla voce successiva nella lista, o si potrebbe più semplice utilizzare l'elenco indicizzatore per ottenere il nome del file in un particolare indice;
  5. Quando l'utente avvia il processo di spostamento, ottenere i nomi dei file e li conta e, quindi impostare il valore ProgressBar massimo al numero di file che avete.
  6. Il BackgroundWorker.ReportProgress () metodo prende un valore intero come argomento, poi, con il vostro gestore di eventi ProgressChanged (), si sarà in grado di visualizzare il nome del file che viene copiato alla finestra da ottenere il nome del file al posizione di indice, metodo index data dal vostro ReportProgress ().

Questo vi permetterà di utilizzare le prestazioni di un filo supplementare, senza "congelamento" il thread principale da cui è stato creato il modulo, allora si sarà in grado di eseguire contemporaneamente la tua mossa di file, e visualizzare il nome del file per il progresso -Form, illustrando per l'utente visivamente ciò che il progresso è di circa attraverso il vostro controllo ProgressBar, e visualizzare il nome del file, come richiesto.

Fa questo aiuto?

Altri suggerimenti

Non sarebbe più semplice per fare un'altra forma invece di utilizzare i dialoghi predefiniti?

In questo modo si può solo avere una casella di testo che si popolano e rinfrescare

Si potrebbe fare mettere tutto il codice per mostrare lo spostamento dei file all'interno della finestra di dialogo di conferma.

Ma per dare una soluzione più completa potrebbe dirmi come si stanno raccogliendo il file di informazioni in movimento.

Una buona soluzione potrebbe essere quella di passare solo nella lista dei file da spostare e quindi eseguire la funzione in movimento nella finestra di dialogo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top