此代碼是返回登錄窗體中的文本框的值。傳遞用戶名形式,但用戶名返回空c#
public partial class Login : Form
{
public string returnUsername()
{
string username = textBox1.Text;
return username;
}
}
此代碼是爲了允許ChangePass窗體顯示。
public partial class Mainmenu_Employee : Form
{
private void changePasswd_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
this.Hide();
Login login = new Login();
ChangePass passwd = new ChangePass(login);
passwd.Show();
}
}
此代碼是從登錄表單中獲取用戶名,以便我可以更改用戶名的密碼。
public partial class ChangePass : Form
{
Login login = null; //parent form
Mainmenu_Employee main = new Mainmenu_Employee();
public ChangePass(Login login1)
{
InitializeComponent();
login = login1;
}
private void buttonChangePass_Click(object sender, EventArgs e)
{
Model_DB_Employee emp = new Model_DB_Employee();
//Login login = new Login();
string username = login.returnUsername();
if (textBoxNewPass.Text == string.Empty || textBoxConfirmPass.Text == string.Empty)
{
MessageBox.Show("Field cannot be empty!");
}
else
{
if (textBoxNewPass.Text == textBoxConfirmPass.Text)
{
try
{
emp.changePasswd(username,textBoxConfirmPass.Text);
MessageBox.Show(username);
MessageBox.Show("Password updated!");
this.Hide();
main.Show();
}
catch(SystemException ex)
{
MessageBox.Show("Password not updated" + ex);
}
}
else
{
MessageBox.Show("Passwords do not match!");
}
}
}
更改密碼功能:
public void changePasswd(string username, string newpass) //change password
{
Model_Employee emp = new Model_Employee();
//Hasher hash = new Hasher(); //call hasher class for hashing
//string hashed;
//string salt = emp.generateSalt(); //generate random salt
//newpass = newpass + salt; //append salt to newpass
//hashed = hash.encryption(newpass); //hash newpass
for (int i = 0; i < rows.Count; ++i)
{
if ((string)empTab.Rows[i]["username"] == username)//check if ID matches
{
empTab.Rows[i]["passwd"] = newpass; //set passwd to hash new password
//check if dataset has changes
if (dataset.HasChanges())
{
//update database
dbAdapter.Update(dataset, "employee");
MessageBox.Show("Employee Updated!");
refreshTable();
}
else
{
refreshTable();
}
}
}
}
我想,當他登錄到更改用戶的密碼
當他登錄時,我想捕捉他的用戶名。通過一個文本框。
登錄後會顯示主菜單。
用戶需要點擊更改密碼鏈接,會出現更改密碼錶單。
因此,我需要將用戶名從登錄表單傳遞到更改密碼錶單以便使用更改密碼功能。但是,我現在面臨的問題是,用戶名不會從登錄表單傳遞到更改密碼錶單。
什麼時候'username'被置?我在'Login'表單中看不到任何代碼。 – Jodrell
「我的代碼有什麼問題嗎?」是的,你將所有業務邏輯和UI混合在一起,這是winforms強制你做的事情。很快,切換到WPF太遲了! =) –
@HighCore Winforms不會強迫你這樣做,它只是允許你,而且太多人不會嘗試將它們分開。當你嘗試將它們分開時,這很有可能,而不是那麼困難。 – Servy