【问题标题】:Enabling/disabling buttons via function/method通过函数/方法启用/禁用按钮
【发布时间】:2017-10-12 14:42:45
【问题描述】:
  1. 我有 8 个按钮,每个按钮执行不同的任务,即编辑、删除、创建等,以及每个任务的上下文菜单

  2. 我在 DB 中有一个名为 Moderations 的表,它由布尔值组成,即 groupTitle、canEdit、canDelete、canCreate..... groupTitle 是字符串而不是布尔值

  3. 我有一个 bool 函数 canDoIt(task, userid) 来检查登录的用户(将有特定的 groupTitle)是否可以执行(函数返回 true 或简而言之,对于提供的任务为 false)

假设,我想检查一个登录的用户是否可以执行任务,通过 canDoit(task, userid) 检查,如果他不能,按钮将被禁用,否则不会...... OnForm_Load 我抛出该函数(或者可能是我需要它的另一个时间)并检查每个按钮,即

btnEdit.Enabled = canDo("canEdit", userID)
btnDelete.Enabled = canDo("canDelete", userID)
btnCreate.Enabled = canDo("canCreat", userID)

cnxMenuEdit.Enabled = canDo("canEdit", userID)
cnxMenuDelete.Enabled = canDo("canDelete", userID)
.
.
.
.....and so on and so forth.

我的方法效果很好,但我有疑问和问题。

第一个问题,这样好吗?

第二个问题,专业吗?

另一个是,这会影响程序或数据库的性能吗?

【问题讨论】:

  • @Sinatr 我不同意。这段代码不完整,需要审查,OP 质疑整体方法,这很适合 SO。
  • @DonBoitnott,“很好吗?”,“专业吗?” 听起来“我不喜欢”,这是“请对某人进行代码审查”。他们有他们的规则,我同意这个问题不适合那里。

标签: c# winforms function coding-style


【解决方案1】:

您需要将登录用户的访问权限保存在内存中。 创建一些包含访问权限列表的用户模型,在用户登录时将其加载到某个静态对象,然后您可以在需要时检查访问权限。

类似的东西

public class UserModel 
{
    public List<UserAccessRight> AccessRights {get; set;}
}

public class UserAccessRight
{
    public string Name {get; set;}
}

public static class SomeAuthHelperClass
{
    public UserModel CurrentUser {get; set;}

    // some helper methods to retrieve data etc.

   public static CanDo(string accessRight)
   {
       return CurrentUser.AccessRights.Contains(ar => ar.Name.Equals(accessRight);
   }
}
.....

btnEdit.Enabled = SomeAuthHelperClass.CanDo("EditSomething");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2010-09-13
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多