【问题标题】:How do I add access rights to my c# windows forms application?如何向我的 c# windows 窗体应用程序添加访问权限?
【发布时间】:2019-01-05 15:08:59
【问题描述】:

首先,如果这个问题已经在某个地方提出过,但我在查找后根本无法在任何地方找到答案,我真的很抱歉。我对编码也很陌生,如果实际上不可能或其他什么,我很抱歉。

我在 C# 中创建了一个 Windows 窗体应用程序,其中包含多个面板,这些面板本身包含文本框和标签等元素。例如,我有一个聊天面板和一个日历面板。我想根据用户的权限以某种方式在其中建立访问权限(访问级别存储在已经连接到应用程序的数据库中)。理想情况下,我希望用户登录后,然后初始化并创建面板(从安全的角度来看)这样会更好。

我不能真正提供屏幕截图或太多代码,因为它是用于评估的作品,我不允许将其放在互联网上。

提前非常感谢:)

【问题讨论】:

标签: c# winforms panel access-rights


【解决方案1】:

如果我猜对了,那么你想做的是if(userHasSomePermission) { CreateComponent };,而不是之前创建它,如果用户没有权限禁用/隐藏它

如果是这样的话,这不是科学,但有点棘手。

在您的 Form 构造函数中,您有 InitializeComponents() 方法,该方法存储在您的 Form.Designer.cs 文件中。在该文件中,您正在创建控件。

您可以做的是在您的 Form.cs 中创建更多方法,例如

private void CreatePanel1()
{
    Panel p = new Panel();
    p.Location = new Point(3, 3);
    p.Size = new Size(50, 50);
    p.BackgroundColor = Color.Black;
    this.Controls.Add(p);
}

然后根据需要在构造函数中调用它:

public Form()
{
    InitializeComponents();

    if( checkIfUserHavePermission )
        CreatePanel1();
}

这样,我们方法中的组件只会在需要时创建。

其中一个棘手的部分是you will not see components inside designer window,因为只有位于Form.Designer.cs/InitializeComponents() 中的组件才会在其中绘制。因此,您想要进行的任何更改都需要通过代码手动完成。

否则,如果您担心安全性并且不想只是隐藏/禁用某些控件,则可以在需要时将其删除。

因此,您可以使用每个控件的 Tag 属性,并将假设为 Admin_C 添加到每个控件的 Tag,这仅适用于管理员,然后执行以下操作:

public Form()
{
    InitializeComponents();

    if(userIsNotAdmin)
    {
        foreach (Control item in this.Controls)
        {
            if(item.Tag.ToString() == "Admin_C")
                this.Controls.Remove(item); 
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-03
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    相关资源
    最近更新 更多