Dalam aplikasi Windows Forms, mengakses koleksi Application.OpenForms kerap digunakan untuk mendapatkan borang yang sedang dibuka. Walau bagaimanapun, situasi mungkin timbul apabila koleksi secara konsisten mengembalikan kiraan 0, yang membawa kepada kekeliruan.
Bertentangan dengan kepercayaan popular, koleksi Application.OpenForms memang kembali tepat keputusan dalam kebanyakan kes. Ia menyimpan senarai borang yang sedang dibuka, memberikan gambaran keadaan aplikasi. Walau bagaimanapun, pepijat tertentu dalam Windows Forms boleh menyebabkan sifat borang tertentu menjadi tidak boleh diakses selepas pemula.
Apabila sifat seperti ShowInTaskbar, FormBorderStyle, ControlBox atau Opacity dimanipulasi selepas permulaan, Windows Forms tidak dapat mengubah suai asli bendera gaya tingkap dengan berkesan. Ini membawa kepada tetingkap asal dimusnahkan dan yang baharu dicipta. Walaupun tetingkap baharu menggunakan tetapan sifat yang diubah suai, kelas Aplikasi tidak mengetahui penciptaannya. Akibatnya, koleksi Application.OpenForms kekal lapuk, menunjukkan kiraan 0 untuk borang yang dipersoalkan.
Untuk mengurangkan pepijat ini, adalah penting untuk menetapkan sifat yang terjejas ini semata-mata dalam pembina borang, sebelum CreateWindowEx() digunakan. Ini memastikan bahawa Borang Windows boleh mengemas kini bendera gaya tetingkap dengan betul tanpa menyebabkan isu kelipan dan salah kira yang tidak diingini.
Disebabkan potensi koleksi OpenForms untuk mengembalikan hasil yang salah, adalah disyorkan untuk meneroka kaedah alternatif untuk mendapatkan borang semasa:
Atas ialah kandungan terperinci Mengapa Application.OpenForms.Count Kadangkala Mengembalikan 0 dalam Borang Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!