Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446

    [C#]Drag&drop da OpenFileDialog

    Si può fare il drag&drop con un'immagine selezionata dall'openfiledialog?
    Cioè posso trascinare un'immagine dalla finestra della mia dialog iin un panel?
    Perchè non mi viene. Ho settato anche la proprietà del panel allowdrop su true, quindi non so cosa sbaglio.

    codice:
    private void temporalLineControl1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    		{
    			Point clientPoint = this.PointToClient(new Point (e.X, e.Y));
    			Control co = GetChildAtPoint(new Point(clientPoint.X, (Height/2)));
    			
    			if (co == null)
    			{
    				PropImmagini select = (PropImmagini)e.Data.GetData(typeof (PropImmagini));
    				System.Windows.Forms.Control l = new PaintRectangle(
    					new Rectangle(clientPoint.X, Height/2, 20, 10),
    					select.Nome, select.Path);
    				l.BackColor = Color.Red;
    				Controls.Add(l);
    				l.BringToFront();
    				this.Invalidate();
    			}
    			else
    			{
    				MessageBox.Show(this, "there is already a file in this position", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    			}
    		}
    
    		private void temporalLineControl1_DragOver(object sender, System.Windows.Forms.DragEventArgs drgevent)
    		{
    			base.OnDragOver (drgevent);
    			drgevent.Effect = DragDropEffects.All;
    		}

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    In genere, le finestre di dialogo comuni (come la OpenFileDialog) sono form modali, pertanto è necessario chiuderle operando una selezione (o annullandola) per poter interagire con il form sottostante.

    Non so se quanto chiedi sia possibile in termini pratici, ma non credo si possa fare senza introdurre codice appropriato in una "open dialog" personalizzata.

    Forse ti conviene costruire una nuova finestra di dialogo usando componenti e controlli a disposizione, che simuli il comportamento di quella originale ma che supporti anche le operazioni di cui desideri sia dotata la finestra di apertura, appunto.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446
    In effetti è un po' un casino!
    Cmq visto che per i miei scopi va bene, anzi forse meglio, permettere di trascinare un oggetto da un form di windows in cui sono contenute delle immagini (ad esempio la cartella delle immagini campione), ho messo così:

    codice:
    protected override void OnDragDrop(DragEventArgs e)
    		{
    			Point clientPoint = this.PointToClient(new Point (e.X, e.Y));
    			Control co = GetChildAtPoint(new Point(clientPoint.X, (Height/2)));
    			
    			if (co == null)
    			{
    				PropImmagini obj = (PropImmagini)e.Data.GetData("TemporalLine.PropImmagini");
    				if (obj != null)
    				{
    					PropImmagini select = (PropImmagini)obj;//(PropImmagini)e.Data.GetData(typeof (PropImmagini));
    					System.Windows.Forms.Control l = new PaintRectangle(
    						new Rectangle(clientPoint.X, Height/2, 20, 10),
    						select.Nome, select.Path);
    					l.BackColor = Color.Red;
    					Controls.Add(l);
    					l.BringToFront();
    					this.Invalidate();
    				}
    				else 
    				{
    					String[] data = (String[])e.Data.GetData("FileName");
    					// if data.leng > 0
    					String fullPath = data[0];
    					System.Windows.Forms.Control l = new PaintRectangle(
    						new Rectangle(clientPoint.X, Height/2, 20, 10),
    						Path.GetFileName(fullPath), Path.GetDirectoryName(fullPath));
    					l.BackColor = Color.Red;
    					Controls.Add(l);
    					l.BringToFront();
    					this.Invalidate();
    				}
    			}

    Ho distinto i due casi:
    -l'immagine proviene da una listbox formata da un elenco di oggetti appartenenti alla classe creata da me PropImmagini (che contiene il nome e il percorso del file)
    -oppure l'immagine viene trascinata da un form di windows

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.