在.net中不同視窗之間傳值有很多種不同的方法,這裡給出兩種比較常用的方法:
項目中有兩個表單,Form1和Form2,要實現的效果是點擊Form1中的Button1按鈕實現TextBox1和TextBox2中的值相加,然後把這個相加的值傳遞給Form2中的TextBox1,並在TextBox1中顯示出這個和值。 方法一:通過為表單類寫屬性來傳遞值 (1),在被傳遞值的表單(這裡是Form2)類裡面寫屬性 private string str;//定義的私人變數 public string STR//為表單Form2定義的屬性
{
get { return str; }//讀
set//寫
{
str = value;
}
} (2),在Form2中把讀到的屬性賦給Form2中的TextBox1文字框 private void Form2_Load(object sender, EventArgs e) {
textBox1.Text = str;
} (3),在Form1中的Button1的Click點擊事件中寫如下代碼 private void button1_Click(object sender, EventArgs e) {
Form2 frm2 = new Form2();
int a, b, sum;
if (int.TryParse(textBox1.Text, out a) && int.TryParse(textBox2.Text, out b))
{
sum = a + b;
frm2.STR = sum.ToString();
frm2.ShowDialog();
}
else
{
frm2.STR = "輸入的為非數字型字串";
frm2.ShowDialog();
}
} 大功告成,在你的機子上運行下,是不是成功了? 方法二:通過為表單類寫建構函式來傳值 (1),在被傳遞值的表單(這裡是Form2)類裡面寫其建構函式,注意原來的建構函式不要修改它,我們在代碼塊裡面直接加入以下代碼即可。 string str1, str2;//定義兩個私人變數 public Form2(TextBox tb1, TextBox tb2)//定義建構函式,tb1和tb2對應Form1中的TextBox1和TextBox2,以便傳值
{
InitializeComponent();//一定要加上。。。
str1 = tb1.Text.ToString();//取文字框值
str2 = tb2.Text.ToString();
int a, b, sum;
if (int.TryParse(str1, out a) && int.TryParse(str2, out b))//檢查文字框裡面的值是否可轉化為int型,傳回值為bool型,如果為真,則轉化為整型a和b
{
int sum = a + b;
textBox1.Text = Convert.ToString(sum);
}
else
{
textBox1.Text = "輸入的為非數字型字串";
}
} (2),在Form1中的Button1的Click事件中寫如下代碼 private void button1_Click(object sender, EventArgs e) {
Form2 frm2 = new Form2(textBox1, textBox2);
frm2.ShowDialog();
} 到這裡,第二種方法也完成了,是不是覺得很簡單?