2010-04-30 22 views
9

Estoy haciendo un editor de mapas muy básico. Estoy a la mitad y uno de los problemas que encuentro es cómo eliminar un objeto.¿Cómo puedo seleccionar un cuadro de imagen?

Me gustaría presionar eliminar pero parece que no hay ningún evento de selección para cuadros de imagen y parecerá que lo tendré solo en mi listbox.

¿Cuál es la mejor solución para eliminar un objeto en mi editor?

+0

en el idioma de la bruja, ¿quieres que hagas? – Werewolve

+0

@were: creo que puede suponer C# o VB.NET. El primero parece ser más común. Sin embargo, traducir el * código * en sí mismo debería ser el menor de los problemas. – Joey

+0

C# y puedo leer vb bien. Quizás considere arrastrar el objeto fuera de pantalla una solución de eliminación. Para mal, no pensé en eso de inmediato. –

Respuesta

17

Querrá el cuadro de imagen para participar en el orden de tabulación y mostrar que tiene el foco. Eso requiere un poco de cirugía menor. Agregue una nueva clase a su proyecto y pegue el código que se muestra a continuación. Compilar. Coloque el nuevo control desde la parte superior de la caja de herramientas en su formulario. Implementa el evento KeyDown.

using System; 
using System.Drawing; 
using System.Windows.Forms; 

class SelectablePictureBox : PictureBox { 
    public SelectablePictureBox() { 
    this.SetStyle(ControlStyles.Selectable, true); 
    this.TabStop = true; 
    } 
    protected override void OnMouseDown(MouseEventArgs e) { 
    this.Focus(); 
    base.OnMouseDown(e); 
    } 
    protected override void OnEnter(EventArgs e) { 
    this.Invalidate(); 
    base.OnEnter(e); 
    } 
    protected override void OnLeave(EventArgs e) { 
    this.Invalidate(); 
    base.OnLeave(e); 
    } 
    protected override void OnPaint(PaintEventArgs pe) { 
    base.OnPaint(pe); 
    if (this.Focused) { 
     var rc = this.ClientRectangle; 
     rc.Inflate(-2, -2); 
     ControlPaint.DrawFocusRectangle(pe.Graphics, rc); 
    } 
    } 
} 
+0

Gracias, funciona muy bien: D –

+0

@Hans Passant: ¿realmente participa en el orden de tabulación en un formulario de Windows? Porque no recibe el foco cuando se presiona TAB desde el control anterior o se presiona CTRL + TAB desde el siguiente control. ¿Cuál es tu concepción al respecto? Saludos. – priyamtheone

+0

Sí, ese era el objetivo de este código. Acabo de comprobarlo de nuevo, pestañas como una madre. No te olvides de * reemplazar * el cuadro de imagen con este nuevo control. –

1

Creo que esta es la mejor méthode:

http://felix.pastebin.com/Q0YbMt22

+0

veo a dónde vas con eso. –

+0

Puede usar el mismo efecto en un método delegado en el controlador de eventos Click de PictureBox. –

Cuestiones relacionadas