gpt4 book ai didi

c# - 如何在满足条件之前禁用控件?

转载 作者:行者123 更新时间:2023-11-30 13:50:14 24 4
gpt4 key购买 nike

目前在我的程序中大约有 10 个控制事件处理程序,我有以下代码:

        if (!mapLoaded)
return;

当我通过打开文件对话框加载 map 时,我将 mapLoaded 设置为 true。另一种方法是在启动时禁用所有控件,并在加载 map 后启用所有控件。不幸的是,有 30 多个控件,而这只是 30 行..

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

我真的不能通过 this.Controls 做一个 foreach 循环,因为有些控件是菜单项、工具条项、面板项、滚动条、拆分器等等,而那个循环不包括这些。

理想情况下,有一种方法可以在一个简单的循环中将每个控件的启用属性设置为 true,但我不确定该怎么做。有什么想法吗?

最佳答案

使用数据绑定(bind):

  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 属性数据绑定(bind)到 MapLoaded。您可以使用 Windows 窗体设计器或使用代码设置数据绑定(bind),例如在 InitializeComponent(); 之后:

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

关于c# - 如何在满足条件之前禁用控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7052431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com