繁体   English   中英

如何为c#Windows Forms应用程序添加访问权限?

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

首先,如果在某个地方已经问过这个问题,我真的很抱歉,但是看完之后我在任何地方都找不到答案。 我对编码也很陌生,因此,如果实际上是不可能的话,请对不起。

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

我实在无法提供屏幕截图或太多代码,因为这是我无法放到互联网上的评估作品。

提前非常感谢:)

如果我说对了,那么您想要做的就是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属性,并在每个控件的Tag添加Admin_C (仅用于管理员),然后执行以下操作:

public Form()
{
    InitializeComponents();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM