2011-09-26 14 views
7

मुझे कैसे पता चलेगा कि तस्वीरबॉक्स की छवि कब बदलती है?
क्या छवि परिवर्तन के लिए कोई घटना है?क्या पिक्चरबॉक्स नियंत्रण के लिए छवि परिवर्तन के लिए कोई घटना है?

+3

मुझे नहीं लगता कि इस तरह की घटना होती है, क्योंकि यह जो बदलने वाला है आप कर सकते हैं/सेटिंग छवि। – Waqas

+1

@Waqas यदि कोई ऐसा मामला है जहां आप उपयोगकर्ता नियंत्रण लाइब्रेरी बना रहे हैं और छवि बदलना महत्वपूर्ण हो, तो आपको छवि परिवर्तन ईवेंट की आवश्यकता हो सकती है। लेकिन फिर आप पिक्चरबॉक्स को बना सकते हैं और पिक्चरबॉक्स को संशोधित कर सकते हैं। इमेज प्राप्त करें/सेट करें विधि जहां आप आग लगा सकते हैं एक कस्टम घटना या एक विधि बुलाओ! – Burimi

उत्तर

8

सबसे पहले यह सुनिश्चित करें कि छवियों एसिंक्रोनस रूप से लोड किए गए हैं बनाते हैं। इस सेट को पिक्चरबॉक्स का WaitOnLoad property झूठा करने के लिए सेट करें (जो डिफ़ॉल्ट मान है)।

pictureBox1.WaitOnLoad = false; 

तो एसिंक्रोनस रूप से छवि को लोड:

pictureBox1.LoadAsync("neutrinos.gif"); 

PictureBox के LoadCompleted घटना के लिए एक ईवेंट हैंडलर बनाएँ। यह घटना तब ट्रिगर होती है जब एसिंक्रोनस छवि-लोड ऑपरेशन पूरा हो जाता है, रद्द हो जाता है, या अपवाद होता है।

pictureBox1.LoadCompleted += PictureBox1_LoadCompleted; 

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

आप MSDN पर इस घटना के बारे में अधिक जानकारी पा सकते हैं:

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

3

वहाँ इवेंट लोड यदि आप Load() या LoadAsync(), लेकिन Image संपत्ति के लिए नहीं का उपयोग कर रहे हैं। यह स्पष्ट रूप से आपके द्वारा निर्धारित किया गया है (डेवलपर) और आम तौर पर आपके नियंत्रण का 100% (नीचे नोटेशन देखें) में बोल रहा है। क्या तुम सच में करना चाहता है तो यद्यपि (वहाँ नहीं वास्तव में एक बिंदु, हालांकि), आप अपने खुद UserControlPictureBox से निकाले जाते हैं कर सकते हैं और Image संपत्ति को ओवरराइड, और अपने खुद ईवेंट हैंडलर को लागू।

संकेतन मुझे लगता है एक घटना आप एक घटना की सदस्यता के लिए चाहते हो जाएगा है अगर आप कुछ तृतीय-पक्ष घटक या नियंत्रण है कि छवि संपत्ति में परिवर्तन का उपयोग कर रहे हैं, और आप उप दिनचर्या के कुछ प्रकार लागू करना चाहते हैं जब यह हो जाता। इस घटना में इमेज चेंजेड इवेंट की आवश्यकता होगी क्योंकि आपके पास छवि सेट होने पर नियंत्रण नहीं है। दुर्भाग्यवश इस परिदृश्य को रोकने के लिए अभी भी कोई रास्ता नहीं है।

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

आप और/या कोड से साधन में इस वर्ग को जोड़ने और ImageChanged घटना का उपयोग को पकड़ने के लिए छवि बदल दिया जाता है, तो

संबंधित मुद्दे