C# TabContral選項卡中載入顯示表單後 實現單向參數傳遞測試程式碼範例(圖)

來源:互聯網
上載者:User
前幾天在網上找的資料可以把表單整個載入到選項卡中(見上一篇),這樣實現起來非常好用,多視窗顯示也方便了很多。

在把視窗都加入後,我想能不能在主表單上傳遞參數給載入到選項卡上的表單呢,比如傳遞查詢的參數之類。

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;        }    }

這個例子只是實現了單向的參數傳遞,如果反過來需要在載入的表單中將參數傳給主表單呢?繼續研究,你有什麼好方法一同探討。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.