如何向我的 c# windows 表单应用程序添加访问权限?

How do I add access rights to my c# windows forms application?

首先,如果这个问题已经在某个地方被问过,但我在寻找之后根本找不到答案,我真的很抱歉。我对编码也很陌生,如果实际上不可能或其他原因,我很抱歉。

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

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

提前致谢:)

如果我没看错,那么你要做的是 if(userHasSomePermission) { CreateComponent }; 而不是之前创建它,如果用户没有权限 disable/hide 它

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

在您的 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() 中的组件才会在其中绘制。因此,您想要进行的任何更改都需要通过代码手动完成。

否则,如果您担心安全性并且不想只 hide/disable 一些控制,您可以在需要时将其删除。

因此您可以使用每个控件的 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); 
        }
    }
}