[英]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.