2013-07-21 48 views
0

我已經制作了2種不同的表單,'Administrator'和'Student'以及'Password Change'選項,然後創建了另一個表單以詢問'New password ',當用戶點擊'管理員'或'學生'表單中的'密碼更改'選項時,該用戶將會打開。檢查表單是否通過C#中的特定表單/按鈕打開

我想知道是否有任何方法可以通過單擊「管理員」表單或「學生」表單的鏈接來檢查是否打開「新密碼」表單。如果通過單擊管理菜單中的「密碼更改」鏈接打開「新密碼」表單,則更新管理員的密碼,如果通過學生表單打開「新密碼」表單,則更新學生的密碼。

回答

0

一個簡單的解決方法是增加一個屬性爲「新密碼」的形式與模式名稱:

class NewPassword() 
{ 
    ... 
    public string Mode {get;set;} 
    ... 
} 

調用之前ShowDialog方法首先設置該屬性。

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

您可以在「新有一個公共的屬性,那麼你可以從新的密碼形式,檢查其內容密碼「表格,並將其設置爲在打開表格之前從中打開它。你可以用對象或字符串或任何你想要的類型來完成它。

1

就個人而言,我會做兩個子類從NewPassword彷彿條款你就必須要檢查的ammount的你的財產是什麼可能是巨大的

AdminNewPassword : NewPassword 
StudentNewPassword : NewPassword 

,那麼你仍然可以擁有所有你的邏輯在新的密碼,但每當你需要以不同的方式處理事情時,他們可以採取相應的形式。

那麼對於管理員,你叫new AdminNewPassword。學生 - StudentNewPassword

0

如果管理和學生來自同一類型繼承,你可以簡單地傳遞對象的形式爲基本類型的構造函數。您將需要基類聲明的項目級別因此,如果您的基類是Person,並且您繼承了該Admin和Student的兩個類

在調用表單中,將您的用戶聲明爲Admin或Student(Student s1)然後在您的密碼窗體的構造函數使用如下所示:

public New_Password_Form(Person User) 

在您的調用窗體中顯示此窗體包含用戶。

New_Password_Form npf = new New_Password_Form(s1); 
npf.ShowDialog(); 

這使得新密碼錶單可以訪問從該用戶的Person繼承的所有屬性,並且這些更改將保持不變。表單關閉後,您可以按照您已建立的方式保存新信息。

相關問題