2011-09-26 9 views
7

¿Cómo puedo saber cuándo cambia la imagen de la imagen?
¿Hay un evento para un cambio de imagen?¿Hay algún evento para cambiar la imagen de un PictureBox Control?

+3

no creo que hay un evento tal porque se trata de usted que va a cambiar/configuración de la imagen. – Waqas

+1

@Waqas si hay un caso en el que está creando una Biblioteca de control de usuario y el cambio de imagen puede ser importante de lo que podría necesitar Evento de cambio de imagen. Pero de nuevo puede heredar PictureBox y modificar PictureBox.Image Obtener/Establecer el método donde puede disparar un evento personalizado o llame a un método! – Burimi

Respuesta

8

Primero asegúrese de que las imágenes se cargan de forma asíncrona. Para hacer esto, establezca WaitOnLoad property de PictureBox en falso (que es el valor predeterminado).

pictureBox1.WaitOnLoad = false; 

A continuación, cargar la imagen de forma asíncrona:

pictureBox1.LoadAsync("neutrinos.gif"); 

Crear un controlador de eventos para el evento LoadCompleted del cuadro de imagen. Este evento se desencadena cuando la operación de carga de imágenes asíncrona se completa, cancela o causa una excepción.

pictureBox1.LoadCompleted += PictureBox1_LoadCompleted; 

private void PictureBox1_LoadCompleted(Object sender, AsyncCompletedEventArgs e) 
{  
    //...  
} 

Puede encontrar más información sobre este evento en MSDN:

http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.loadcompleted.aspx

3

Hay eventos de carga si se utiliza o Load()LoadAsync(), pero no para la propiedad Image. Esto lo establece explícitamente usted (el desarrollador) y generalmente habla en un 100% de su control (vea la notación a continuación). Sin embargo, si realmente quería hacerlo (aunque no hay realmente ningún punto), puede derivar su propio UserControl de PictureBox y anular la propiedad Image, e implementar su propio controlador de eventos.

notación supongo un evento que usted quiere un evento para suscribirse a es si está utilizando algún componente de terceros o de control que cambia la propiedad de imagen, y se desea implementar una especie de sub-rutina cuando este sucede. En este caso, sería una razón para necesitar un evento ImageChanged ya que no tiene control sobre cuándo se establece la imagen. Desafortunadamente, todavía no hay una forma de eludir este escenario.

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

namespace CustomPX 
{ 
    public class CustomPictureBox : PictureBox 
    { 
     public event EventHandler ImageChanged; 
     public Image Image 
     { 
      get 
      { 
       return base.Image; 
      } 
      set 
      { 
       base.Image = value; 
       if (this.ImageChanged != null) 
        this.ImageChanged(this, new EventArgs()); 
      } 
     } 
    } 
} 

Puede agregar esta clase en la caja de herramientas y/o de código y utilizar el evento ImageChanged de contraerse si la imagen cambia

Cuestiones relacionadas