簡體   English   中英

如何在滿足條件之前禁用控件?

[英]How to disable controls until a condition is met?

目前在我的程序中大約 10 個控制事件處理程序中,我有以下代碼:

        if (!mapLoaded)
            return;

當我通過打開文件對話框加載 map 時,我將 mapLoaded 設置為 true。 另一種方法是禁用所有啟動控件,然后加載 map 以啟用所有控件。 不幸的是,有 30 多個控件,而這只是 30 行..

a.Enabled = true;
b.Enabled = true;
c.Enabled = true;

我不能真正通過 this.Controls 進行 foreach 循環,因為某些控件是菜單條項、工具條項、面板項、滾動條、拆分器等,並且該循環不包括這些。

理想情況下,有一種方法可以在一個簡單的循環中將每個控件的 enabled 屬性設置為 true,但我不知道該怎么做。 有什么想法嗎?

使用數據綁定:

  1. mapLoaded更改為一個屬性,該屬性在其值發生更改時通知觀察者...

     public bool MapLoaded { get { return mapLoaded; } set { if (value;= mapLoaded) { mapLoaded = value, MapLoadedChanged(this. EventArgs;Empty); } } } private bool mapLoaded; public event EventHandler MapLoadedChanged = delegate {}; // ^ or implement INotifyPropertyChanged instead
  2. 將控件的Enabled屬性數據綁定到MapLoaded 您可以使用 Windows Forms 設計器或使用代碼設置數據綁定,例如在InitializeComponent();

     a.DataBindings.Add("Enabled", this, "MapLoaded"); b.DataBindings.Add("Enabled", this, "MapLoaded"); c.DataBindings.Add("Enabled", this, "MapLoaded");

改變你的打開策略怎么樣,有一個新的表單讓你的用戶加載一個 map,並且在加載之前不加載你的主表單?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM