【问题标题】:How to avoid Reload on property set如何避免在属性集上重新加载
【发布时间】:2013-09-04 09:31:57
【问题描述】:
public bool ShowButton
    {
        get
        {
            return _ShowButton;
        }
        set
        {
            _ShowButton = value;
            ReloadGrid();
        }
    }


    public bool ShowText
    {
       get
        {
            return _ShowText;
        }
        set
        {
            _ShowText = value;
            ReloadGrid();
        }
    }


    private void ReloadGrid()
    {
         Gridview.Data ......
    }

在设置这两个属性时,我需要调用 ReloadGrid。但我的要求是,如果我分配了 2 个属性,那么 ReloadGrid 应该只调用一次,现在它会发生两次。如何避免这种情况?

【问题讨论】:

    标签: c#-4.0 custom-controls


    【解决方案1】:

    如何避免这种情况?

    通过不在属性的设置器中调用ReloadGrid

    public bool ShowButton { get; set; }
    public bool ShowText { get; set; }
    

    你必须手动调用它:

    ShowButton = true;
    ShowText = false;
    ReloadGrid();
    

    另一个选项更难。您需要一个 bool 变量来存储它是否已经加载,并且您必须在需要刷新数据的事件中将其设置为 false。然后你可以在ReloadGrid中查看这个变量:

    private bool GridNeedsReload { get; set; }
    private void ReloadGrid()
    {
        if(GridNeedsReload)
        {
            Gridview.Data ......
        }
    }
    

    【讨论】:

    • ShowButton = true; ShowText = false; ReloadGrid();
      不可能,因为 ReloadGrid 是私有的...
      如果我分配 ShowButton = true .. ReloadGrid() 将发生并且 ShowText = true 这里我也需要一样的..
      我想要的到底是什么我需要重新加载网格的最终属性集
    猜你喜欢
    • 2013-10-07
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多