[英]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,但我不知道該怎么做。 有什么想法嗎?
使用數據綁定:
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
將控件的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.