我正在设置一个用户和管理员权限,它可以很好地工作,但是我想从“用户”中禁用一些ToolStripMenuItem,但仅对“管理员”启用它们。
以下是根据用户和管理员的角色登录的代码。
if (dt.Rows[0][0].ToString() == "1")
{
if (ComboBox_LoginAs.SelectedIndex == 0)
{
this.Hide();
Main_Form mainSystem = new Main_Form();
mainSystem.Show();
}
else if (ComboBox_LoginAs.SelectedIndex == 1)
{
this.Hide();
Main_Form mainSystem = new Main_Form();
mainSystem.Show();
/* disable View All Employees for Users */
ViewAllEmployeesToolStripMenuItem.Enable = false;
}
我希望用户无法查看除Admin之外的所有员工记录。 我希望这个问题不会被否决。
谢谢您的帮助!
答案 0 :(得分:0)
这是我曾经使用过的界面的一个例子,可以完成类似的工作。
namespace UnNamed Project
{
class Program
{
static void Main(string[] args)
{
User user;
user = new SuperUser("Bob", "12345");
if (user.Login())
{
Console.WriteLine($"Welcome {user.Name}");
}
else
{
Console.WriteLine("An error has occured.");
}
Utility.PauseBeforeContinuing();
}
}
}
namespace UnNamed Project
{
interface ILoginHandler
{
bool HandleLogin();
void SetPassword(string password);
}
}
namespace UnNamed Project
{
abstract class User
{
private string _name;
private int _securityLevel;
public User(string name, int securityLevel)
{
_name = name;
_securityLevel = securityLevel;
}
abstract public bool Login();
}
}
namespace UnNamed Project
{
class SuperUser : User
{
private ILoginHandler _loginHandler;
public SuperUser(string name, string password) : base(name, 10)
{
_loginHandler = new FaceLogin(password);
}
public override bool Login()
{
return _loginHandler.HandleLogin();
}
}
}
如您所见,如果安装正确,则可以创建一个对象“ User”和另一个对象“ Admin”,然后在user中创建一个抽象方法。您可以选择执行一个虚拟方法来处理登录,只需确保您的管理类具有自己的Login()方法的覆盖即可。这将导致程序使用与对象直接相关的方法。
答案 1 :(得分:0)
好的,所以我尝试将MenuStripItem修改器状态更改为“公共”。然后我在主窗体上创建了一个对象。
public static Main_Form GetMainForm_Obj;
public Main_Form()
{
InitializeComponent();
}
然后在表单加载中添加:
private void Main_Form_Load(object sender, EventArgs e)
{
eMPLOYEESToolStripMenuItem.Enabled = true;
GetMainForm_Obj = this;
}
最后,以我的登录表单:
if (ComboBox_LoginAs.SelectedIndex == 0)
{
this.Hide();
Main_Form mainSystem = new Main_Form();
mainSystem.Show();
}
else if (ComboBox_LoginAs.SelectedIndex == 1)
{
this.Hide();
Main_Form mainSystem = new Main_Form();
mainSystem.Show();
Main_Form.GetMainForm_Obj.eMPLOYEESToolStripMenuItem.Enabled = false;
}
谢谢大家!