好的,用戶成功登錄後,警告框將顯示用戶名,然後將彈出另一個表單,以便用戶更改其密碼。我想在條件語句中使用用戶名(來自登錄表單)的值來更改密碼。從兩個或多個表單中獲取值C#
我如何獲得來自另一個表單的這個值?謝謝。
景觀的形象在這裏:
好的,用戶成功登錄後,警告框將顯示用戶名,然後將彈出另一個表單,以便用戶更改其密碼。我想在條件語句中使用用戶名(來自登錄表單)的值來更改密碼。從兩個或多個表單中獲取值C#
我如何獲得來自另一個表單的這個值?謝謝。
景觀的形象在這裏:
是什麼迷惑ü? 將用戶名傳遞給下一個表單,我沒有看到第三個表單必須知道其他表單的原因。這將是一個更無用的依賴。
您可以創建一個Custom Event,在成功登錄時提出,您可以將該信息與CustomEventArgs一起傳遞,然後在發出第二個表單時使用它。
事情是這樣的:
Form1中
public partial class Form1 : Form
{
Logon logon;
PasswordChange pass;
public Form1()
{
InitializeComponent();
logon = new Logon();
logon.raiseLoginEvent += new Logon.LoginSuccesful(logon_raiseLoginEvent);
logon.ShowDialog();
}
void logon_raiseLoginEvent(object sender, LoginEventArgs e)
{
pass = new PasswordChange();
pass.LoginName = e.Login;
pass.ShowDialog();
}
}
登錄
public partial class Logon : Form
{
public delegate void LoginSuccesful(object sender, LoginEventArgs e);
public event LoginSuccesful raiseLoginEvent;
public Logon()
{
InitializeComponent();
}
private void Logon_FormClosing(object sender, FormClosingEventArgs e)
{
LoginEventArgs ev = new LoginEventArgs("Admin");
raiseLoginEvent(this, ev);
}
}
public class LoginEventArgs : EventArgs
{
public LoginEventArgs(string s)
{
loginName = s;
}
private string loginName;
public string Login
{
get { return loginName; }
set { loginName = value; }
}
}
PasswordChange
public partial class PasswordChange : Form
{
public PasswordChange()
{
InitializeComponent();
}
public string LoginName
{
get {return textBox1.Text; }
set { textBox1.Text = value; }
}
}
這樣做的一種方法是在登錄表單中使用公共屬性,以便您可以以其他形式訪問的用戶名。
例如:
裏面LoginForm的,創建一個公共屬性
public string UserName { get; private set;}
填寫LoginForm的這個屬性,並傳遞給其他形式。在創建第二種形式的對象時,可以從第一種形式訪問數據,然後將其傳遞給其他形式的屬性/構造函數。
例如,
FacultyForm facultyForm=new FacultyForm();
facultyForm.UserName = loginForm.UserName; //in this case you have to create a property in other form too.
這僅僅是做到這一點的方法之一。
這是否解決了問題?
另一種方法是使用委託/事件。
剛剛發現一個相對類似的帖子以及http://stackoverflow.com/questions/3552169/sharing-a-variable-between-two-winforms – Adil 2012-07-16 05:06:49
如何將它傳遞給另一種形式? – 2012-07-16 05:15:06
在創建第二種形式的對象時,可以從第一種形式訪問數據,然後將其傳遞給其他形式的屬性/構造函數。例如, 例如, FacultyForm facultyForm = new FacultyForm(); facultyForm.UserName = loginForm.UserName; //在這種情況下,您必須以其他形式創建一個屬性。這只是這樣做的一種方式。 – Adil 2012-07-16 05:37:46
使登錄表單的UserName文本框爲public,以便您可以從任何其他表單獲取。
您可以LoginForm.designer.cs修改代碼來做到這一點
公共控制是一個糟糕的錯誤。最好避免它。順便說一句 - 沒有理由這樣做 – Artiom 2012-07-16 06:17:43
一種方法是使用使用登錄形式的公共屬性的用戶名,你可以在其他形式的訪問。 – Adil 2012-07-16 05:00:56