2011-09-26 10 views
7

ピクチャボックスの画像がいつ変更されるのかを知る方法は?
イメージ変更のイベントはありますか?PictureBoxコントロールの画像が変更されるイベントはありますか?

+3

を変更した場合はキャッチするImageChangedイベントを使用することができます私は、このようなイベントがあるとは思いません/設定イメージ。 – Waqas

+1

@Waqasあなたがユーザーコントロールライブラリを構築している場合や、イメージ変更が重要である可能性がある場合はイメージ変更イベントが必要です。しかし、再度PictureBoxを継承し、PictureBoxを変更することができます。イメージ取得/設定メソッドは、カスタムイベントを呼び出すか、メソッドを呼び出す! – Burimi

答えて

8

まず、画像が非同期に読み込まれていることを確認します。これを行うには、PictureBoxのWaitOnLoad propertyをfalse(デフォルト値)に設定します。

pictureBox1.WaitOnLoad = false; 

そして、非同期画像を読み込む:

pictureBox1.LoadAsync("neutrinos.gif"); 

は、ピクチャボックスのLoadCompletedイベントのイベントハンドラを作成します。このイベントは、非同期イメージ・ロード操作が完了、キャンセル、または例外の発生時にトリガーされます。

pictureBox1.LoadCompleted += PictureBox1_LoadCompleted; 

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

あなたは、MSDNでこのイベントに関する詳細な情報を見つけることができます:あなたはLoad()LoadAsync()ではなくImageプロパティのために使用する場合

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

3

ロードイベントがあります。これはあなた(開発者)によって明示的に設定され、一般にあなたのコントロールの100%で話しています(下記の表記を参照)。あなたが本当に欲しかったのであれば、UserControlPictureBoxから派生させてImageプロパティをオーバーライドし、独自のイベントハンドラを実装することができます。

表記 私はあなたのイメージプロパティを変更するいくつかのサードパーティのコンポーネントまたはコントロールを使用している、とあなたはときに、このサブルーチンのいくつかの並べ替えを実装したい場合は、イベントが購読したいと思うのイベントがあるとし起こるこのイベントでは、ImageChangedイベントが必要な理由は、イメージが設定されたときに制御できないためです。残念ながら、このシナリオを回避する方法はまだありません。これが変更されます誰があなたですので

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()); 
      } 
     } 
    } 
} 

あなたがおよび/またはコードからツールボックスにこのクラスを追加し、画像が

関連する問題