C# WinForm窗體間傳值

1.使用公共類
在項目中建一UserHelper類,裏面都是靜態成員
class UserHelper
{
public static int id;
public static string name;
.........
}
各窗體可以把裏面的id,name當作全局變量來用.

A窗體:
UserHelper.id=10;
B窗體:
textBox1.Text=UserHelper.id.ToString();

2.窗體添加公共屬性
給窗體添加public的屬性
使用示例:
1)在Form2窗體添加公共屬性
public partial class Form2: Form
{
    private string _username;
    private string _password;
    public string UserName
    {
        get
        {
            return _username;
        }
        set
        {
            _username=value;
        }
    }
    public string Password
    {
        get
        {
            return _password;
        }
        set
        {
            _password=value;
        }
    }
    .....
}

2)在窗體Form1添加一個的Botton1、一個comboBox1,在Botton1_Click函數中如下代碼:
private void button1_Click(object sender,EventArgs e)
{
   Form2 myForm2 = new Form2();
   myForm2.UserName="Richard";//Form1向Form2傳值!!!
   myForm2.Password="pwd1234";
   DialogResult result= myForm2.ShowDialog();
   if(result==DialogResult.OK)
   {
        comboBox1.Items.Add(myForm2.UserName);////Form2向Form1傳值!!!
        comboBox2.Items.Add(myForm2.Password);
    }
}

3)對Form2的代碼作如下完善:
在Form2_Load中添加如下代碼:
private Form2_Load(object sender,EventArgs e)
{
     textBox1.Text=_username;
     textBox2.Text=_password;
}
在textBox1、textBox2的textChanged事件中添加如下代碼:
private void textBox1_TextChanged(object sender,EventArgs e)
{
     this.UserName=textBox1.Text;
}
private void textBox2_TextChanged(object sender,EventArgs e)
{
     this.Password=textBox2.Text;
}

3.使用構造函數傳遞一個數值
class FormB
{
int orgId;
public FormB(int orgId)
{
    this.orgId=orgId;
}
}

class FormA
{
public void ShowB()
{
    FormB fb=new FormB(5); // 5是要傳遞過去的值
    fb.Show();
}
}

4.把A窗體整個傳遞給B窗體
有些時候需要在B窗體裏對A窗體的某個控件值做修改,並且需要立即改變A窗體的控件顯示,本方法適合這種情況。
修改FormA,把要在B裏處理的控件的可訪問性(Modifiers)設爲public,然後按下面的方式處理
class FormA
{
public void ShowB()
{
    FormB fb=new FormB(this); // 在構造函數裏把A窗體本身傳過去
    fb.Show();
}
}

class FormB
{
FormA fm; //B窗體增加一個FormA類型的成員
public FormB(FormA fm) //添加一個帶參數的構造方法,參數類型是FormA
{
    this.fm=fm;
}
protected void Method1()
{
    fm.txtName.Text="Haha!"; //在這兒可以直接操作A窗體裏的控件了!
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章