Pergunta

Eu tenho um projeto winform que lista todos os arquivos em uma pasta especificada. Ele permite ao usuário selecionar um novo destino para cada arquivo, e quando o usuário escolheu os destinos para todos os arquivos que ele gostaria de ser movido, ele move os arquivos, um por um.

Meu próximo passo é, eu preciso exibir um formulário de confirmação quando os arquivos estão sendo movidos, e adicionar o nome e destino de cada arquivo para o formulário de confirmação, uma vez que está sendo movido.

A minha pergunta é: Como posso adicionar mais texto para controles do formulário de confirmação depois que eu já carreguei-(usando confirm.showdialog() de minha outra forma, sem qualquer interação do usuário? Eu imagino que eu preciso fazê-lo de forma original, porque ele precisa para exibir cada um quando ele começa a mover esse arquivo, mas estou aberto a sugestões:)

TIA

Foi útil?

Solução

Ambas as respostas acima são boas.

Se bem entendi, a sua principal forma permitirá uma para selecionar vários arquivos, em seguida, selecione o seu destino e iniciar o processo de movimentação. Se é isso que você precisa, eu simplesmente faça o seguinte:

  1. Criar um novo formulário que iria relatar o processo para o usuário, sem necessidade de qualquer interação, mas apenas para informar ao usuário o arquivo está sendo movido;
  2. Criar uma instância de um objeto BackgroundWorker, e chamar o método de arquivo-movimento do BackgroundWorker.DoWork () método (dentro do seu formulário principal);
  3. Flag seu BackgroundWorker ao progresso relatório, em seguida, chamar o manipulador BackgroundWorker.ReportProgress () evento de dentro do seu método de arquivo-movimento;
  4. Use a lista previamente criada de nomes de arquivos para obter o seu nome e relatá-lo à sua forma de diálogo de arquivo-movimento enquanto o arquivo está sendo alterado. Um simples DataBinding mais de uma etiqueta deve fazer o truque quando você mover o CurrencyManager para o próximo item na lista, ou você poderia usar mais simples a lista de indexador para obter o nome do arquivo em um índice específico;
  5. Quando os lançamentos usuário o processo de movimentação, obter seus nomes e e contá-los, em seguida, definir o seu valor ProgressBar máximo para o número de arquivos que você tem.
  6. O BackgroundWorker.ReportProgress () método aceita um valor inteiro como argumento, então, com o seu manipulador de eventos ProgressChanged (), você vai ser capaz de exibir o nome do arquivo que está sendo copiado para sua janela, obtendo o nome do arquivo no local do índice, índice determinado pelo seu ReportProgress () método.

Isto irá permitir que você use o desempenho de um segmento suplementar, sem "congelar" o seu segmento principal a partir do qual o formulário foi criado, em seguida, você será capaz de realizar simultaneamente a sua jogada arquivo e exibir o nome do arquivo para o progresso -forma, enquanto ilustrando para o usuário visualmente o que o progresso está prestes através de seu controle ProgressBar, e exibindo o nome do arquivo conforme necessário.

Será que isso ajuda?

Outras dicas

Wouldn't it be simpler to make another form instead of using preset dialogs?

that way you can just have a textbox that you populate and refresh

You could do put all of the code to show the moving of the files inside the confirm dialog window.

But to give a more complete solution could you tell me how you are gathering the file moving information.

A Good solution would be to just pass in the list of the files to be moved and then perform the moving function in the dialog.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top