首頁 > 後端開發 > C++ > 為什麼當表單開啟時 Application.OpenForms.Count 會回傳零?

為什麼當表單開啟時 Application.OpenForms.Count 會回傳零?

Linda Hamilton
發布: 2024-12-28 05:14:13
原創
443 人瀏覽過

Why Does Application.OpenForms.Count Return Zero When Forms Are Open?

Application.OpenForms.Count 錯誤地報告零

在某些情況下,Application.OpenForms 計數會傳回錯誤的零值,從而回傳錯誤的零值,從而回傳掩蓋了開啟表格的實際數量。當建立視窗後修改特定屬性時,尤其是那些影響視窗樣式的屬性時,就會出現此問題。

請考慮以下範例,其中 ShowInTaskbar 屬性在初始化後變更:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        button1.Click += button1_Click;
    }
    private void button1_Click(object sender, EventArgs e) {
        Console.WriteLine(Application.OpenForms.Count);
        this.ShowInTaskbar = !this.ShowInTaskbar;
        Console.WriteLine(Application.OpenForms.Count);
    }
}
登入後複製

修改 ShowInTaskbar 後,表單會從 Application.OpenForms 集合中消失,即使它保持開啟狀態。這是由於潛在的 Windows 窗體錯誤所致,其中修改特定屬性會觸發使用 CreateWindowEx() 重新建立本機視窗。結果,Application 類別失去了對表單的跟踪,導致 OpenForms 計數不正確。

要避免此錯誤,請不要在 window之後修改以下屬性建立:

  • ShowInTaskbar
  • FormBorderStyle
  • ControlBox
  • Min/MaximizedBox幫助按鈕
  • 不透明度
  • TransparencyKey
  • ShowIcon
  • MdiParent>
  • ShowIcon
  • MdiParent>

以上是為什麼當表單開啟時 Application.OpenForms.Count 會回傳零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板