Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Drag e drop non funzionante

    Salve a tutti.

    Ho creato una semplice form dove ho inserito un richtextBox.

    Quando trascino un file mi ricavo il suo path e lo scrivo in in textBox in questo modo:

    codice:
    public void richTextBox1_DragDrop(object sender, DragEventArgs e)
       {
         richTextBox1.Text = "";
         string[] filenames = (string[])e.Data.GetData(DataFormats.FileDrop);
            path = filenames[0];
            textBox1.Text = path;
          }
    Il problema è che quando finisce le istruzioni di questo metodo si blocca tutto, l FORM NON RISPONDE PIù.
    Su un altro form mi hanno detto che potrebbe essere un problema delle estenzioni di windows explorer.
    In effetto ho provato su altri pc e il programma funziona.
    Allora mi hanno detto di scaricare AutoRuns, ho provato a "smanettare" ma senza risultati.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Moderazione

    Come espressamente indicato nel Regolamento interno è necessario specificare anche nel titolo il linguaggio e la versione utilizzati.

    Inoltre, il codice va postato usango gli appositi tag CODE.

    Per questa volta sistemo io.
    In futuro, pensaci tu.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Scusa cosa vuol dire quando dici:

    Quando trascino un file........:
    Sbagliare è umano, perseverare è diabolico.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Forse forse ho capito, io ho usato sempre questo codice per trascrivere il testo contenuto in un file .txt, ma come puoi provare se leggi il contenuto della matrice file, ovvero il files[0] hai il percorso completo del file.

    codice:
     string[] droppablePaths;
    
            public void richTextBox1_DragDrop(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    InsertText(droppablePaths);
                }
                else 
                {
                    e.Effect = DragDropEffects.None;
                }
            }
    
            private void richTextBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
            {
                e.Effect = DragDropEffects.None;
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    droppablePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
                    if (DropEnable(droppablePaths))
                    {
                        e.Effect = DragDropEffects.Copy;
                    }
                }
            }
    
            private void InsertText(string[] files)
            {
                using (StreamReader reader = new StreamReader(files[0]))
                {
                    bool atLeastOneLine = false;
                    while (reader.EndOfStream == false)
                    {
                        if (atLeastOneLine)
                        {
                            richTextBox1.SelectedText = Environment.NewLine;
                        }
                        richTextBox1.SelectedText = reader.ReadLine();
                        atLeastOneLine = true;
                    }
                }
            }
           
            private bool DropEnable(string[] files)
            {           
                string extension = Path.GetExtension(files[0]);
                return string.IsNullOrEmpty(extension) ?
                    false : extension.Equals(".txt", StringComparison.InvariantCultureIgnoreCase);
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
                richTextBox1.AllowDrop = true;
                richTextBox1.DragDrop += new DragEventHandler(richTextBox1_DragDrop);
                richTextBox1.DragEnter += new DragEventHandler(richTextBox1_DragEnter);
            }
    Sbagliare è umano, perseverare è diabolico.

  5. #5
    Forse non mi sono spiegato bene.
    Intendevo dire che quando seleziono un file e lo trascino dentro la mia richTextBox della mia form con il codice che ho postato mi ricavo il percorso di dove risiede il file.
    Ma il mio problema è che sul mio computer quando faccio questa operazione si blocca tuttto invece su altri computer no.
    Allora su un altro form mi hanno detto che è un problema del Windows Explorer però non sono riuscito a risolverlo questo problema.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Intendevo dire che quando seleziono un file e lo trascino dentro la mia richTextBox della mia form con il codice che ho postato mi ricavo il percorso di dove risiede il file.
    E io ti ho risposto che con il codice che ho postato riesci tranquillamente ad avere il Path del file trascinato nel controllo, ovviamente con piccole modifiche (io usavo solo l'estenzione .txt, come puoi vedere), in alternativa al tuo che non ti funge.

    Il tuo codice non ti avevo detto che a me funziona tranquillamente.
    Sbagliare è umano, perseverare è diabolico.

  7. #7
    Scusa hai ragione.Grazie così funziona.
    Ma il problema del mio codice era che sbagliavo il tipo di evento da intercettare?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Originariamente inviato da thedestroyer90
    Ma il problema del mio codice era che sbagliavo il tipo di evento da intercettare?
    Ma se ti ho detto che a me funziona?
    Sbagliare è umano, perseverare è diabolico.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.