我制作了两种不同的表格,“管理员”和“学生”,并带有“密码更改”选项,然后创建了另一个表格,要求用户输入“新密码”,当用户点击“密码更改”选项时打开在“管理员”或“学生”表格中。
我想知道是否有任何方法可以通过单击“管理员”表格或“学生”表格的链接来检查“新密码”表格是否已打开。如果通过单击管理员菜单的“更改密码”链接打开“新密码”表格,则更新管理员密码,如果通过学生表格打开“新密码”表格,则更新学生密码。
就个人而言,我会从NewPassword
if 子句的数量中创建两个子类,你必须检查你的财产可能是巨大的
AdminNewPassword : NewPassword
StudentNewPassword : NewPassword
然后你仍然可以在新密码中拥有所有逻辑,但是当你需要以不同的方式处理事情时,它们可以采用各自的形式。
然后对于管理员,您调用 new AdminNewPassword
.. Student -StudentNewPassword
如果管理员和学生是从同一类型继承的,您可以简单地将表单构造函数中的对象作为基类型传递。您将需要声明项目级别的基类因此,如果您的基类是 Person 并且您从该 Admin 和 Student 继承了 2 个类
在调用表单中将您的用户声明为 Admin 或 Student(Student s1) 然后在密码表单的构造函数中使用如下内容:
public New_Password_Form(Person User)
在您的呼叫表单中显示此表单,包括用户。
New_Password_Form npf = new New_Password_Form(s1);
npf.ShowDialog();
这使新密码表单可以访问从 Person 为该用户继承的所有属性,并且更改将是持久的。表单关闭后,您可以根据您已经建立的方式保存新信息。
一个简单的解决方案是在“新密码”表单中添加一个属性,名称为模式:
class NewPassword()
{
...
public string Mode {get;set;}
...
}
在调用 ShowDialog 方法之前首先设置此属性。
一个简单的解决方案是在新密码表单上实现公共属性并从打开表单设置它。然后您可以从新密码表单中检查其内容:
以新密码形式:
public string Opener;
if(Opener == "admin")
// set admin password
else
// set student password
其他形式:
FrmNewPassword frmPasswd = new FrmNewPassword();
frmPasswd.Opener = "admin"; // or frmPasswd = "student";
frmPasswd.Show();
您可以在“新密码”表单中拥有一个公共属性,并在打开表单之前设置它是从哪个表单打开的。您可以使用对象或字符串或您想要的任何类型来执行此操作。