前幾天在網路上找的資料可以把窗體整個加載到選項卡中(見上一篇),這樣實現起來非常好用,多窗口顯示也方便了很多。
在把視窗都加入後,我想能不能在主窗體上傳遞參數給載入到選項卡上的窗體呢,例如傳遞查詢的參數之類。
1、新建2個窗體:主窗體Form1, 子窗體Form2
#設定Form1上的textBox1為public,方便把textBox1直接傳遞過去,當然也可以只傳遞字串
先用上一篇的程式碼將form2加入到form1的選項卡中,這裡設定點擊generatefm按鈕時執行這個事件
private void generatefm_Click(object sender, EventArgs e) { tbMobile = new TabPage("中国"); tbMobile.Name = "tbmobile"; tabControl1.Controls.Add(tbMobile); Form form2 = new Form2(textBox1); //传递textBox1过去 // Form2 form = new Form2(); form2.TopLevel = false; form2.BackColor = Color.White; form2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; form2.FormBorderStyle = FormBorderStyle.None; form2.Show(); tbMobile.Controls.Add(form2); tabControl1.SelectedIndex = 2; }
#在Form2中使用建構子接受參數:
public partial class Form2 : Form { public Form2() { InitializeComponent(); } public Form2(TextBox ts) { InitializeComponent(); textBox2.Text = ts.Text; }
}
#這樣就可以實現載入form2的時候把form1輸入的內容直接傳遞過去,這是初始狀態。如果要在載入後修改輸入內容同時改變form2中的內容呢,繼續:
private void button1_Click(object sender, EventArgs e) { form2.textBox2.Text = textBox1.Text; } private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { form2.textBox2.Text = textBox1.Text; }
這裡使用的from2變量,需要在form1中開始的地方先聲明一下就可以了,對應的加入選項卡中的程式碼只需簡單改一下,Form1的最終的程式碼:
public partial class Form1 : Form { private TabPage tbMobile = null; private TabPage tbUnion = null; Form2 form2 = null; //先在这里声明,便于加载后引用 public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { form2.textBox2.Text = textBox1.Text; //这里就可以引用了,form2的textBox2必须先设置成public } private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { form2.textBox2.Text = textBox1.Text; //切换选项卡时也获取最新的输入参数 } private void generatefm_Click(object sender, EventArgs e) { tbMobile = new TabPage("中国"); tbMobile.Name = "tbmobile"; tabControl1.Controls.Add(tbMobile); form2 = new Form2(textBox1); // Form2 form = new Form2(); form2.TopLevel = false; form2.BackColor = Color.White; form2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; form2.FormBorderStyle = FormBorderStyle.None; form2.Show(); tbMobile.Controls.Add(form2); tabControl1.SelectedIndex = 2; } }
這個範例只是實作了單向的參數傳遞,如果反過來需要在載入的窗體中將參數傳給主窗體呢?繼續研究,你有什麼好方法一同探討。
以上是C# TabContral標籤中載入顯示窗體後 實作單向參數傳遞測試程式碼範例(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!