• 技术文章 >后端开发 >C#.Net教程

    C# TabContral选项卡中加载显示窗体后 实现单向参数传递测试代码示例(图)

    黄舟黄舟2017-03-10 14:18:38原创1687

    前几天在网上找的资料可以把窗体整个加载到选项卡中(见上一篇),这样实现起来非常好用,多窗口显示也方便了很多。

    在把窗口都加入后,我想能不能在主窗体上传递参数给加载到选项卡上的窗体呢,比如传递查询的参数之类。

    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中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:C# 32位程序访问64位注册表的示例代码 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • C# 动态加载Dll• 从0自学C#04--特性和设计原则• ASP.NET使用Ajax如何返回Json对象的方法具体介绍• 【c#教程】C# 属性(Property)• asp.net 图片验证码的HtmlHelper
    1/1

    PHP中文网