C#Winforms根据功能启用/禁用按钮

时间:2017-08-22 17:51:45

标签: c# winforms

我希望根据特定功能的返回值启用或禁用winform上的按钮。基本上,我在各个地方尝试以下代码,其中函数可能返回不同的值:

btnNewNotices.Enabled = isSelectedPrinterValid();
this.btnNewNotices.Refresh()

但是,这不起作用。为什么在更改enabled属性后调用refresh方法时,按钮没有启用?我必须关闭表单并在按钮正确禁用之前重新打开它。什么是在不必反弹表格的情况下完成我需要的最佳方法?

2 个答案:

答案 0 :(得分:1)

简短的回答,但它很直接。

使用.Refresh();会使按钮重新绘制自身,并重置Enabled属性。没有理由在您的上下文中使用它。只需删除它。

btnNewNotices.Enabled = isSelectedPrinterValid();

答案 1 :(得分:1)

您可以为Databinding媒体资源添加Enabled。 如果您的方法已在Form中实施,那么您可以定义Property

public bool IsSelectedPrinterValid
{
    get{ return this.isSelectedPrinterValid(); }
}

并添加数据绑定如下:

btnNewNotices.Databindings.Add("Enabled", this, "IsSelectedPrinterValid");

您可以刷新您的价值:

btnNewNotices.Databindings[0].ReadValue();

常见的方法是实现一个包含所需属性和方法的ViewModel,并将控件绑定到这些属性和方法。