自定义按钮状态的设置问题
我有一个按钮,继承自button,现在希望这个按钮创建时,能自动根据数据库中某个表的某个字段的值,设置该按钮的Enabled属性。这个处理逻辑应该是放在button的哪个事件里呢?
我尝试过将代码放在layout事件里,但发现这样做之后,打开放置按钮的FORM时,就会提示值不能为null。参数名Source的提示。代码如下:
var itemMenus = bal.commo.RoleMenus.Where(p=>p.MNUID.Trim()==MNUID);
foreach (var item in ItemMenus)
{
this.Enabled = item.EXEABLE
}
其中,bal.commo.RoleMenus是一个集合,包含了当前登陆用户所能使用的权限集合。而我的本意就是从
这个集合里,找到该按钮对应的权限ID,然后根据EXEABLE属性来判断该按钮是否可用。
但就不知道为什么一打开FORM就报错,大虾位指点一下。如果是我放置的事件不对,还请大虾指出应该放置
在何事件里?谢谢! --------------------编程问答-------------------- 求解 --------------------编程问答--------------------
protected override void OnPaint(PaintEventArgs pe)--------------------编程问答-------------------- LS正解!OnPaint --------------------编程问答-------------------- 放在onPaint里没问题,但是打开放置有button控件的FORM时,还是会报“值不能为null。参数名Source”的提示,在FORM的界面上,显示的button都是没有图标的,而是显示一个红色的X号!~ --------------------编程问答-------------------- 在FORM的界面上,把button的MNUID的值去掉(要根据MNUID值来获取该按钮的可用状态,在设计时,已经填入了相关的值),改为在FORM的load事件里赋值就没事了。
{
base.OnPaint(pe);
bool flag = false;//假设这是从数据库中读出来的flag
if (flag)
{
//
}
else
{
this.Enabled = false;
}
}
Onpaint事件里的代码:
if (!string.isNullorEmpty(this.MNUID))
{
var itemMenus = bal.commo.RoleMenus.Where(p=>p.MNUID.Trim()==MNUID);
foreach (var item in ItemMenus)
{
this.Enabled = item.EXEABLE
}
}else(this.Enabled = true;)
代码如上,为什么在设计时为button填入MNUID值,打开界面时就报错,而改为在FORM的load事件里为button的MNUID赋值就没事?哪位大虾能给个解释?
补充:.NET技术 , C#