我已经制作了两种不同的表格,'管理员'和'学生',可以选择'密码更改',然后创建另一个表格,询问用户的“新密码”,当用户点击“密码”时会打开在“管理员”或“学生”表单中更改“选项”。
我想知道是否有任何方法可以通过点击“管理员”表单或“学生”表单的链接来检查是否打开了“新密码”表单。如果通过单击“管理”菜单的“密码更改”链接打开“新密码”表单,则更新管理员密码,如果通过学生表单打开“新密码”表单,则更新学生密码。
答案 0 :(得分:1)
就个人而言,我会从NewPassword
创建两个子类作为if条款的大小,你必须检查你的财产是多么巨大
AdminNewPassword : NewPassword
StudentNewPassword : NewPassword
然后你仍然可以在新密码中拥有所有逻辑,但是当你需要以不同方式处理事物时,它们可以采用相应的形式。
然后,对于管理员,您拨打new AdminNewPassword
..学生 - StudentNewPassword
答案 1 :(得分:0)
一个简单的解决方案是将属性添加到名为mode的“新密码”表单:
class NewPassword()
{
...
public string Mode {get;set;}
...
}
在调用ShowDialog方法之前首先设置此属性。
答案 2 :(得分:0)
一个简单的解决方案是在新密码表单上实现公共属性,并从开头表单中进行设置。然后,您可以从新密码表单中检查其内容:
以新密码形式:
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();
答案 3 :(得分:0)
您可以在“新密码”表单中设置公共属性,并在打开表单之前将其设置为打开它的形式。你可以用对象或字符串或你想要的任何类型来做它。
答案 4 :(得分:0)
如果admin和students继承自相同类型,则只需将表单构造函数中的对象作为基类型传递即可。您将需要基类声明的项目级别因此,如果您的基类是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的所有属性,并且更改将是持久的。表单关闭后,您可以根据已经建立的方式保存新信息。