检查是否通过C#中的特定窗体/按钮打开了窗体

本文关键字:窗体 按钮 是否 检查 | 更新日期: 2023-09-27 18:24:09

我制作了两个不同的表单,"管理员"answers"学生",并提供了"密码更改"选项,然后创建了另一个表单,要求用户输入"新密码",当用户单击"管理员"或"学生"表单中的"密码修改"选项时,该表单就会打开。

我想知道是否有任何方法可以通过单击"管理员"窗体或"学生"窗体的链接来检查"新密码"窗体是否已打开。如果通过单击"管理"菜单的"密码更改"链接打开了"新口令"窗体,则更新管理员的密码,如果通过"学生"表格打开了"新建口令"窗体则更新学生的密码。

检查是否通过C#中的特定窗体/按钮打开了窗体

就我个人而言,我会从NewPassword中创建两个子类作为if子句的总数,您必须检查您的属性可能是巨大的

AdminNewPassword : NewPassword
StudentNewPassword : NewPassword

然后,您仍然可以在新密码中保留所有逻辑,但无论何时您需要以不同的方式处理事情,它们都可以采用各自的形式。

然后,对于管理员,您可以调用new AdminNewPassword。。学生-StudentNewPassword

一个简单的解决方案是在"新密码"表单中添加一个属性,名称为模式:

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();

您可以在"新密码"窗体中拥有一个公共属性,并在打开窗体之前设置它从哪个窗体打开。您可以使用对象或字符串或您想要的任何类型来执行此操作。

如果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继承的所有属性,并且更改将是持久的。表单关闭后,您可以根据已建立的方式保存新信息。