Bueno, este es otro buen ejemplo de como hacer Drag and Drop pero con TextBox, la idea es que al darle click sostenido, puedan seleccionar todo el texto y luego arrastrarlo de un Textbox a otro.
Lo primero, como en otros casos, declarar una variable de tipo Objetc de nombre Origenes que mantendrá la referencia del objeto de donde iniciamos el drag & Drop.
object Origenes;
En el evengo Load del Formulario debemos habilitar el Drag & Drop de cada TextBox ya que por defecto vienen desactivados
textBox1.AllowDrop = true;
textBox2.AllowDrop = true;
Claro, con el nombre que ustedes le den a los textBox y la cantidad de elementos que controles que deseen activar el D&D.
Luego programamos los eventos
MouseDown
DragEnter
DragDrop
Copien y Peguen el siguiente código en su formulario, pero fuera de cualquier evento, ya que lo que van a pegar son eventos.
private void TextBox_MouseDown(object sender, MouseEventArgs e)
{
Origenes = sender;
TextBox txt = (TextBox)sender;
txt.SelectAll();
txt.DoDragDrop(txt.Text, DragDropEffects.Copy);
}
private void TextBox_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void TextBox_DragDrop(object sender, DragEventArgs e)
{
TextBox txt = (TextBox)sender;
TextBox origen=(TextBox)Origenes;
if (txt != origen)
{
txt.Text = (string)e.Data.GetData(DataFormats.Text);
origen.Text = "";
}
}
una vez terminado, solo ejecútenlo y listo.
Mostrando entradas con la etiqueta "Drag And Drop". Mostrar todas las entradas
Mostrando entradas con la etiqueta "Drag And Drop". Mostrar todas las entradas
lunes, 25 de abril de 2011
sábado, 16 de mayo de 2009
Drag And Drop en PictureBox
Este efecto es muy interesante y propio de la programación orientada a objetos, en este evento (a diferencia de los otros que solo desencadena un procedimiento, como el Click, load, Mouse Move etc) se desencadenan tres procedimientos:
Mouse Move
DragEnter
DragDrop
En ese orden.
Imaginemos que tenemos dos pictureBox de Nombre Foto1 y otro de nombre Foto2 lo primero que debemos haces es activarles el Drag And Drop, en el evento Load del formulario escribimos:
Foto1.AllowDrop=true;
Foto2.AllowDrop=true;
Cuando le den clic no va a aparecer, así que no se preocupen al respecto solo escríbanlo.
Ahí mismo declaramos una variable de tipo object llamada origenes que sea publica
object origenes;
Esta variable se utiliza para mantener la referencia al objeto de donde se está arrastrando la imagen de no ser así, solo podríamos hacer Copiar/Pegar y nó Drag And Drop, es recomendable declarar esta variable antes del constructor.
Bueno, una vez realizado esto, van a hacer copy/Paste a los procedimientos que llamaran desde los eventos del drag and drop, anteriormente mencionados:
Esto es lo que van a a asociar al evento Mouse Down de los PictureBox Foto1 y Foto2, claro solo el nombre que seria PictureBox_MouseDown
private void PictureBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
///Objeto de origen de la imagen
PictureBox pic = (PictureBox)sender;
origenes = sender;
if (e.Button == MouseButtons.Left)
{
if (pic.Image != null)
{
pic.DoDragDrop(pic.Image, DragDropEffects.Move);
}
}
}
-------------------------------------------------------------------------------------
Esto en el Drag Enter de los dos Picture Box llamas PictureBox_DragEnter
private void PictureBox_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Bitmap))
{
e.Effect = DragDropEffects.Move;
}
else
{
e.Effect = DragDropEffects.None;
}
}
-------------------------------------------------------------------------------------
Y por ultimo en el DragDrop asociamos esto:
private void PictureBox_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
PictureBox pic = (PictureBox)sender;
PictureBox org = (PictureBox)origenes;
if (pic.Name != org.Name)
{
pic.Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap);
org.Image = null;
}
}
Una importante observación, esto se copia y pega dentro del formulario, no dentro de ningún evento y luego a los dos objetos se les asocia en cada evento los nombres de los procedimientos Ejemplo
En los eventos (Que están en el símbolo de rayito en la ventana de propiedadas que aparece a la derecha de la ventana) buscamos el evento MouseMove y sin darle doble click en el espacio escribimos PictureBox_MouseDown y damos Enter, igual con los otros, una vez terminado, ejetutamos el formulario y listo.
Mouse Move
DragEnter
DragDrop
En ese orden.
Imaginemos que tenemos dos pictureBox de Nombre Foto1 y otro de nombre Foto2 lo primero que debemos haces es activarles el Drag And Drop, en el evento Load del formulario escribimos:
Foto1.AllowDrop=true;
Foto2.AllowDrop=true;
Cuando le den clic no va a aparecer, así que no se preocupen al respecto solo escríbanlo.
Ahí mismo declaramos una variable de tipo object llamada origenes que sea publica
object origenes;
Esta variable se utiliza para mantener la referencia al objeto de donde se está arrastrando la imagen de no ser así, solo podríamos hacer Copiar/Pegar y nó Drag And Drop, es recomendable declarar esta variable antes del constructor.
Bueno, una vez realizado esto, van a hacer copy/Paste a los procedimientos que llamaran desde los eventos del drag and drop, anteriormente mencionados:
Esto es lo que van a a asociar al evento Mouse Down de los PictureBox Foto1 y Foto2, claro solo el nombre que seria PictureBox_MouseDown
private void PictureBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
///Objeto de origen de la imagen
PictureBox pic = (PictureBox)sender;
origenes = sender;
if (e.Button == MouseButtons.Left)
{
if (pic.Image != null)
{
pic.DoDragDrop(pic.Image, DragDropEffects.Move);
}
}
}
-------------------------------------------------------------------------------------
Esto en el Drag Enter de los dos Picture Box llamas PictureBox_DragEnter
private void PictureBox_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Bitmap))
{
e.Effect = DragDropEffects.Move;
}
else
{
e.Effect = DragDropEffects.None;
}
}
-------------------------------------------------------------------------------------
Y por ultimo en el DragDrop asociamos esto:
private void PictureBox_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
PictureBox pic = (PictureBox)sender;
PictureBox org = (PictureBox)origenes;
if (pic.Name != org.Name)
{
pic.Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap);
org.Image = null;
}
}
Una importante observación, esto se copia y pega dentro del formulario, no dentro de ningún evento y luego a los dos objetos se les asocia en cada evento los nombres de los procedimientos Ejemplo
En los eventos (Que están en el símbolo de rayito en la ventana de propiedadas que aparece a la derecha de la ventana) buscamos el evento MouseMove y sin darle doble click en el espacio escribimos PictureBox_MouseDown y damos Enter, igual con los otros, una vez terminado, ejetutamos el formulario y listo.
Etiquetas:
.net,
"Drag And Drop",
"Visual Studio",
C#,
PictureBox
Suscribirse a:
Entradas (Atom)