Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
C# Drag AND Drop di oggetti su panel
mercoledì 03 dicembre 2014 - 09.31
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 3.5
|
Windows 7
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
mer 3 dic 2014 - 09:31
Salve a tutti.
Ho inserito in una win form di C# 2010 un panel ed una textbox.
Trascinando la textbox sul panel la text non viene importata sul panel, sembra come se venga trascinata dietro al panel.
Dovrei fare in modo che la textbox venga compresa tra gli oggetti appartenenti al panel, da cosa può dipendere?
public frmProva5()
{
InitializeComponent();
panel1.AllowDrop = true;
}
private void frmProva5_Load(object sender, EventArgs e)
{
}
void panel_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
void panel_DragDrop(object sender, DragEventArgs e)
{
((TextBox)e.Data.GetData(typeof(TextBox))).Parent = (Panel)sender;
}
private void panel1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
0v3rCl0ck
Profilo
| Guru
1.120
messaggi | Data Invio:
ven 5 dic 2014 - 11:23
Ti consiglio di provare prima dal designer di visual studio, metti letteralmente una textbox realmente dentro ad un panel, poi vai nel code-behind dove visual studio generale il codice della form, e guarda come fa a mettere la textbox dentro al panel, ed esegui lo stesso codice nei tuo evento di drop.
Probabilmente dovrai anche scollegare la textbox dal vecchio "parent", cioè la form su dove era prima, e poi rilanciare un bel redraw della form, con un form.Invalidate()
Poi per curiosità: ma perchè devi fare il drag & drop di una textbox in un panel? stai costruendo una sorta di designer?
Michael Denny | Microsoft Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.net
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
ven 5 dic 2014 - 11:54
Ho provato infatti a creare un esempio semplice e basilare e funziona, solo che se attivo una funzione che permette di gestire il drag & drop sugli oggetti, gli oggetti trascinati vanno sotto il panel
, penso perché la classe attivata vada ad influire sugli eventi del panel.
La classe che ho trovato in rete si chiama ControlMoverOrResizer.cs ed è molto carina in quanto permette di spostare gli oggetti sulla form ed addirittura di modificarne la dimensione
! Solo che non ho esperienza sulla gestione degli eventi del mouse in combinazione con altri oggetti e mi trovo in difficoltà nel portare picture e textbox nel panel in quanto non riesco ad importare gli oggetti tramite trascinamento.
Si, vorrei creare una specie di design con alcuni campi importati dal un database e gestibile ad uso utente per generare etichette.
Se qualcuno ha qualche dritta ringrazio anticipatamente.
Grazie per l'attenzione.
Paolo.
0v3rCl0ck
Profilo
| Guru
1.120
messaggi | Data Invio:
ven 5 dic 2014 - 12:22
secondo me non è che vanno sotto al panel, ma probabilmente non gli imposti la posizione X, Y all'interno del panel stesso, oppure peggio hanno la X e Y vecchia. Ad ogni modo se stai facendo un designer, più che spostare un controllo da un panel all'altro perchè non lo usi solo come riferimento, e crei un oggetto nuovo, esattamente come fa visual studio, di fianco di fa solo vedere la lista dei controlli a disposizione, quando trascini un controllo nella form, non stai spostando un controllo, ma lo stai creando da zero.
Michael Denny | Microsoft Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.net
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !