自定义按钮状态的设置问题

wanbolantian 2013-08-18 03:54:30
我有一个按钮,继承自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就报错,大虾位指点一下。如果是我放置的事件不对,还请大虾指出应该放置
在何事件里?谢谢!
...全文
152 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanbolantian 2013-08-18
  • 打赏
  • 举报
回复
在FORM的界面上,把button的MNUID的值去掉(要根据MNUID值来获取该按钮的可用状态,在设计时,已经填入了相关的值),改为在FORM的load事件里赋值就没事了。 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赋值就没事?哪位大虾能给个解释?
wanbolantian 2013-08-18
  • 打赏
  • 举报
回复
放在onPaint里没问题,但是打开放置有button控件的FORM时,还是会报“值不能为null。参数名Source”的提示,在FORM的界面上,显示的button都是没有图标的,而是显示一个红色的X号!~
千杯不醉-sen 2013-08-18
  • 打赏
  • 举报
回复
LS正解!OnPaint
全栈极简 2013-08-18
  • 打赏
  • 举报
回复
 protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);

            bool flag = false;//假设这是从数据库中读出来的flag
            if (flag)
            {
                //
            }
            else
            {
                this.Enabled = false;
            }
        }
wanbolantian 2013-08-18
  • 打赏
  • 举报
回复
求解

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧