我希望根据特定功能的返回值启用或禁用winform上的按钮。基本上,我在各个地方尝试以下代码,其中函数可能返回不同的值:
btnNewNotices.Enabled = isSelectedPrinterValid();
this.btnNewNotices.Refresh()
但是,这不起作用。为什么在更改enabled属性后调用refresh方法时,按钮没有启用?我必须关闭表单并在按钮正确禁用之前重新打开它。什么是在不必反弹表格的情况下完成我需要的最佳方法?
答案 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,并将控件绑定到这些属性和方法。