C# TabContral標籤中載入顯示窗體後 實作單向參數傳遞測試程式碼範例(圖)

黄舟
發布: 2017-03-10 14:18:38
原創
2343 人瀏覽過

前幾天在網路上找的資料可以把窗體整個加載到選項卡中(見上一篇),這樣實現起來非常好用,多窗口顯示也方便了很多。

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

 

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板