Saya memiliki formulir yang menunjukkan pesan kemajuan saat proses yang cukup panjang berjalan. Ini adalah panggilan ke layanan web sehingga saya tidak dapat benar-benar menunjukkan persentase angka lengkap pada progress bar secara bermakna. (Saya tidak terlalu suka properti Marquee dari progress bar)
Saya ingin menunjukkan GIF animasi untuk memberikan proses rasa aktivitas (misalnya file terbang dari satu komputer ke komputer lain seperti proses penyalinan Windows).
Bagaimana kamu melakukan ini?
c#
winforms
animated-gif
Stuart Helwig
sumber
sumber
Jawaban:
Itu tidak terlalu sulit.
Hal-hal yang perlu dipertimbangkan:
Gif animasi:
Jika Anda mencari gif animasi, Anda dapat membuatnya:
AjaxLoad - Ajax Memuat generator gif
Cara lain untuk melakukannya:
Cara lain yang saya temukan yang berfungsi cukup baik adalah kontrol dialog async yang saya temukan pada proyek kode
sumber
Application.DoEvents();
. Kemungkinan pendekatan: logika bisnis Anda menjalankan suatu peristiwa ketika sesuatu dilakukan sebagian, maka properti apa pun (misalnya bilah kemajuan atau persentase) dapat diperbarui dan animasi dapat diperbarui dengan Application.DoEvents ()Saya memiliki masalah yang sama. Seluruh bentuk (termasuk gif) berhenti untuk menggambar ulang sendiri karena operasi yang panjang bekerja di latar belakang. Inilah cara saya memecahkan ini.
Saya hanya membuat utas lain untuk bertanggung jawab atas operasi ini. Berkat formulir awal ini terus menggambar ulang tanpa masalah (termasuk gif saya berfungsi). ShowProgressGifDelegate dan HideProgressGifDelegate adalah delegasi dalam bentuk yang mengatur properti terlihat dari pictureBox dengan gif ke true / false.
sumber
Perhatikan bahwa di Windows, Anda biasanya tidak menggunakan animasi Gif, tetapi sedikit animasi AVI: ada kontrol asli Windows hanya untuk menampilkannya. Bahkan ada alat untuk mengubah animasi Gif ke AVI (dan sebaliknya).
sumber
System.Windows.Forms.PictureBox
kontrol, saya hanya akan menggunakan animasi GIF.Jika Anda meletakkannya di kontrol PictureBox, itu hanya akan berfungsi
sumber
Tidak ketika Anda memulai operasi yang panjang di belakang, karena semuanya berhenti karena Anda berada di utas yang sama.
sumber
sumber
Saya memiliki masalah yang sama dan menemukan solusi yang berbeda dengan menerapkan yang saya gunakan untuk menghadapi beberapa masalah yang berbeda. Akhirnya, di bawah ini adalah apa yang saya satukan beberapa bagian dari posting yang berbeda yang bekerja untuk saya seperti yang diharapkan.
Berikut adalah metode Eksekusi yang juga membawa memohon kontrol PictureBox:
Perlu diingat, PictureBox tidak terlihat dari Properties Window atau lakukan di bawah ini:
sumber