寫Windows Form到後來一定會碰到這個問題:「怎麼在表單間傳遞參數?」網路上當然有許多解法可以參考,今天剛好碰到這個問題,就一起加入許多解法的行列。
我的範例是直接在專案拉兩個表單,Form 1與Form 2,由Form
1做parent(或叫作owner)來開啟Form 2,在Form 2上打些字再傳回Form 1。
Form 1傳給Form 2有幾個方法,我直接利用引數把字串丟過去,用屬性也可以。首先建立一個屬性,讓Form 2可以指派數值到這個屬性上。然後設定Form 1為Form 2的parent,讓Form 2知道回傳字串時是打到parent上。為了能即時取得傳回來的字串,我用ShowDialog()把Form 1的執行緒給卡住。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace passValue
{
public partial class Form1 : Form
{
public string val { get; set; }
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 _f2 = new Form2(textBox1.Text);
_f2.Owner = this;
_f2.ShowDialog();
textBox2.Text = val;
}
}
}
Form 2只要建立parent的物件,直接指派數值就好了。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace passValue
{
public partial class Form2 : Form
{
Form1 _f1 = null;
public Form2(string arg)
{
InitializeComponent();
textBox3.Text = arg;
}
private void button1_Click(object sender, EventArgs e)
{
_f1 = (Form1)this.Owner;
_f1.val = textBox2.Text;
this.Close();
}
}
}
原始碼位置:https://drive.google.com/file/d/0B9Ygq8FD0ogKeFlTa2NoSUZOX1k/view?usp=sharing
沒有留言:
張貼留言