दिलचस्प पोस्ट
मैं 'अपरिचित चयनकर्ता को उदाहरण के लिए भेजा' त्रुटि को डीबग कैसे कर सकता हूं क्या आप एक अजगर फ़ंक्शन प्राप्त करने वाले कीवर्ड तर्कों की सूची कर सकते हैं? SQL सर्वर – संग्रहित प्रक्रिया से चुनें एजेक्स लक्ष्य स्थानीयहोस्ट है जब आईई 10 और 11 में पहुंच से इनकार किया गया क्या मुझे एक PHP वर्ग पर कॉन्स्ट की परिभाषा मिल सकती है? सूची आइटम मुद्रित करने के लिए पायथनिक तरीका HTTPModule घटना निष्पादन आदेश? "खुला / बंद" वर्ग कनेक्शन या खुला रखना? अप करने के लिए फोन नंबर कैसे करें? इकाई फ़्रेमवर्क मेटाडेटा से डाटाबेस तालिका नाम प्राप्त करें यूआरएल के लिए PHP सत्यापन / रैगेक्स NoClassDefFoundError जब GoogleAnalyticsTracker.getInstance () मनमाना-सटीक अंकगणितीय स्पष्टीकरण मैं AngularJS के साथ फार्म आदानों की सशर्त आवश्यकता कैसे कर सकता हूं? MVVM लाइट: ब्लेंड, आसान तरीका या स्निपेट के बिना XAML में इवेंटटोकमांड को जोड़ना?

आप एक विंडोज़ फार्म (सी #) पर एनिमेटेड जीआईएफ कैसे दिखाते हैं

मेरे पास एक फार्म है जो प्रगति संदेशों को काफी लंबी प्रक्रिया चलाता है। यह एक वेब सेवा के लिए कॉल है, इसलिए मैं वास्तव में एक प्रगति पट्टी पर संपूर्ण प्रतिशत का अर्थ सार्थक नहीं दिखा सकता। (मुझे विशेष रूप से प्रगति बार की मार्की संपत्ति पसंद नहीं है)

मैं एक एनिमेटेड जीआईएफ को दिखाने के लिए प्रक्रिया को कुछ गतिविधि का अनुभव देने के लिए चाहूंगा (उदाहरण के लिए एक कम्प्यूटर से दूसरी कंप्यूटर की तरह दूसरी कॉप की प्रक्रिया की तरह फाइलें)

आप यह कैसे करते हैं?

वेब के समाधान से एकत्रित समाधान "आप एक विंडोज़ फार्म (सी #) पर एनिमेटेड जीआईएफ कैसे दिखाते हैं"

यह बहुत मुश्किल नहीं है

  1. अपने फॉर्म पर एक तस्वीर बॉक्स ड्रॉप करें
  2. चित्रबॉक्स में छवि के रूप में .gif फ़ाइल जोड़ें
  3. जब आप लोड हो रहे हैं तो चित्र बॉक्स को दिखाएं।

ध्यान में रखना चीजें:

  • चित्र बॉक्स अक्षम करने से एनिमेटेड होने से जीआईएफ को रोका जा सकेगा

एनिमेटेड gifs:

यदि आप एनिमेटेड जीआईएफ की तलाश कर रहे हैं तो आप यहां उन्हें जेनरेट कर सकते हैं

ऐसा करने का दूसरा तरीका:

एक और तरीका है जो मुझे मिल गया है कि काफी अच्छी तरह से काम करता है async संवाद नियंत्रण है कि मैं कोड परियोजना पर पाया

मुझे भी यही समस्या थी। पूरे फार्म (जीआईएफ सहित) पृष्ठभूमि में काम कर रहे लंबे ऑपरेशन के कारण खुद को फिर से तैयार करने के लिए रोक रहा है। यहां बताया गया है कि कैसे मैंने इसे हल किया।

private void MyThreadRoutine() { this.Invoke(this.ShowProgressGifDelegate); //your long running process System.Threading.Thread.Sleep(5000); this.Invoke(this.HideProgressGifDelegate); } private void button1_Click(object sender, EventArgs e) { ThreadStart myThreadStart = new ThreadStart(MyThreadRoutine); Thread myThread = new Thread(myThreadStart); myThread.Start(); } 

मैंने इस ऑपरेशन के लिए जिम्मेदार होने के लिए बस एक और धागा बनाया है। इस शुरुआती फॉर्म के लिए धन्यवाद समस्याओं के बिना रेखांकित करना जारी है (मेरे जीआईएफ के कामकाज सहित) ShowProgressGifDelegate और HideProgressGifDelegate प्रतिनिधि के रूप में हैं, जो कि तस्वीर बॉक्स की दृश्यमान संपत्ति को जीआईएफ के साथ सही / गलत कहते हैं।

ध्यान दें कि विंडोज में, आप पारंपरिक रूप से एनिमेटेड जीआईएफ का उपयोग नहीं करते हैं, लेकिन थोड़ा एवीआई एनीमेशन: इन्हें प्रदर्शित करने के लिए सिर्फ एक विंडोज मूल नियंत्रण है। एनिमेटेड गिफ्स को एवीआई (और इसके विपरीत) में कनवर्ट करने के लिए उपकरण भी हैं।

अगर आप इसे एक पिक्चरबॉक्स नियंत्रण में डालते हैं, तो उसे काम करना चाहिए

यह तब नहीं होता है जब आप पीछे एक लंबे ऑपरेशन शुरू करते हैं, क्योंकि सब कुछ STOPS के बाद से आप एक ही धागे में पुनः।

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

 private void btnCompare_Click(object sender, EventArgs e) { ThreadStart threadStart = new ThreadStart(Execution); Thread thread = new Thread(threadStart); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } 

यहां एक्ज़ीक्यूशन मेथड भी है, जिसमें पिक्चरबॉक्स नियंत्रण भी शामिल है:

 private void Execution() { btnCompare.Invoke((MethodInvoker)delegate { pictureBox1.Visible = true; }); Application.DoEvents(); // Your main code comes here . . . btnCompare.Invoke((MethodInvoker)delegate { pictureBox1.Visible = false; }); } 

ध्यान रखें, चित्र बॉक्स गुण विंडो से अदृश्य है या नीचे करें:

 private void ComparerForm_Load(object sender, EventArgs e) { pictureBox1.Visible = false; }