我想根据用户的类型动态创建表单。例如: 我希望,如果是管理员,专门为此用户创建表单或按钮。 在我的登录代码中,有一个标识用户类型的验证。 但是我只是在确定用户将其发送到相应的屏幕并且其按钮已经设置时才这样做,但我想要的是在识别用户类型时,生成用户应该有权访问的按钮; 用户具有一种类型的用户,并且该类型的用户具有一个或多个权限,然后,根据用户拥有的权限,创建按钮。每个权限都是一个按钮。 例: 用户Alfonso是销售类型,具有发票和销售的权限,然后当它启动会话时发票"发票"和"出售"按钮将被生成。
答案 0 :(得分:2)
创建“UserType”表:
exec*
创建“菜单”或“选项”表:
| id | userType |
|--------------------------|
| 1 | Administrator |
| 2 | Sales |
按用户类型表(包含选项列表)
创建权限| id | option |
|---------------------|
| 1 | Invoice |
| 2 | Sell |
在应用程序中创建所有选项[动态](使用数据库中的选项创建按钮)
这就是我的想法,所有这些都可以从DataBase
配置答案 1 :(得分:0)
最简单的方法是创建从Form
继承的类,并添加所需的控件并将控件的属性设置为您想要的。当您需要表单时,只需创建一个new
表单即可。如有必要,您可以通过构造函数传递设置表单所需的参数。
答案 2 :(得分:0)
以下是一个示例,说明如何根据用户类型打开不同的表单。根据您的要求重新设计时,您可以进一步优化它。
在下面的代码假设中,FUser1
和FUser2
是根据userType
变量打开的两种表单。
private FUser1 fUser1;
private FUser2 fUser2;
private FUser2 fUserAdmin;
private void OpenForm(int userType)
{
switch (userType)
{
case 1:
if (fUser1 == null)
{
fUser1 = new FUser1();
//do initialization specific to FUser1
fUser1.txtLogin.Text = "Robinhood";
}
fUser1.Show();
break;
case 2:
if (fUser2 == null)
{
fUser2 = new FUser2();
//do initialization specific to FUser2
fUser2.btnProcess.Enable = false;
fUser2.btnPermit.Visible = false;
}
fUser2.Show();
break;
case 3: //Admin
if (fUserAdmin == null)
{
fUserAdmin = new FUser2();
//do initialization specific to FUser2
fUserAdmin.btnProcess.Enable = true;
fUserAdmin.btnPermit.Visible = true;
fUserAdmin.ProcessSales(); //Public function in FUser2
}
fUserAdmin.Show();
break;
}
}