多窗体

Show

Form1 f1 = new Form1();
f1.Show();

ShowDialog--在父窗体之上

Form1 f1 = new Form1();
f1.ShowDialog();

2者具体区别如下: 

1.在调用Form.Show方法后,Show方法后面的代码会立即执行  
2.在调用Form.ShowDialog方法后,直到关闭对话框后,才执行此方法后面的代码  
3.当窗体显示为模式窗体时,单击“关闭”按钮会隐藏窗体,并将DialogResult属性设置为DialogResult.Cancel  
与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置DialogResult属性的值时,不调用窗体的Close方法  
实际上是把窗体的Visible属性赋值为false,隐藏窗体了  
这样隐藏的窗体是可以重新显示,而不用创建该对话框的新实例  
因为未关闭窗体,所以在应用程序不再需要该窗体时,请调用该窗体的Dispose方法

Owner子窗口在父窗口之上,父窗口可操作

Form1 f1 = new Form1();
f1.Owner = this;
f1.Show();

 多窗口传值

方法一:通过为窗体类写属性来传递值
(1),在被传递值的窗体(这里是Form2)类里面写属性

        private string str;//定义的私有变量
        public string STR//为窗体Form2定义的属性
        {
            get //读

            { return str;

            }
            set//写
            {
                str = value;
            }
        }

(2),在Form2中把读到的属性赋给Form2中的TextBox1文本框

        private void Form2_Load(object sender, EventArgs e)
        {
            textBox1.Text = str;
        }

(3),在Form1中的Button1的Click点击事件中写如下代码

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            int a, b, sum;
            if (int.TryParse(textBox1.Text, out a) && int.TryParse(textBox2.Text, out b))//关于TryParse的使用方法,见补充知识。
            {
                sum = a + b;
                frm2.STR = sum.ToString();
                frm2.ShowDialog();
            }
            else
            {
                frm2.STR = "输入的为非数字型字符串";
                frm2.ShowDialog();
            }
        }

方法二:通过为窗体类写构造函数来传值
(1),在被传递值的窗体(这里是Form2)类里面写其构造函数,注意原来的构造函数不要修改它,我们在代码块里面直接加入以下代码即可。

        string str1, str2;//定义两个私有变量
        public Form2(TextBox tb1, TextBox tb2)//定义构造函数,tb1和tb2对应Form1中的TextBox1和TextBox2,以便传值
        {
            InitializeComponent();//一定要加上。。。
            str1 = tb1.Text.ToString();//取文本框值
            str2 = tb2.Text.ToString();
            int a, b, sum;
            if (int.TryParse(str1, out a) && int.TryParse(str2, out b))//检查文本框里面的值是否可转化为int型,返回值为bool型,如果为真,则转化为整型a和b, 关于TryParse的使用方法,见补充知识。
            {
                int sum = a + b;
                textBox1.Text = Convert.ToString(sum);
            }
            else
            {
                textBox1.Text = "输入的为非数字型字符串";
            }
        }

(2),在Form1中的Button1的Click事件中写如下代码

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2(textBox1, textBox2);
            frm2.ShowDialog();
        }

 控件数据绑定

可绑定的控件名.DataSource = 数据源;
可绑定的控件名.DisplayMember = "要显示的数据源列名";
可绑定的控件名.ValueMember = "要对应显示的数据源列名";

WindowsForm多窗体、多窗体传值、控件数据绑定--2016年12月8日的更多相关文章

  1. WindowsForm公共控件--2016年12月5日

    Button text:修改按钮显示的文字 CheckBox Checked:是否选中 CheckedListBox checkedListBox.Items.Add(显示的值,初始选中状态); ch ...

  2. WebForm控件--2016年12月29日

    简单控件 1.Label  =>   <span id="Label1">Label1</span> 2.Literal  =>  Text 填 ...

  3. ListView控件--2016年12月9日

    ListView属性 ListView   名称 说明 AccessKey 重写 WebControl.AccessKey 属性. 不支持将此属性设置 ListView 控件.(覆盖 WebContr ...

  4. WindowsForm菜单工具栏--2016年12月6日

    ContextMenuStrip 添加控件后可在其他空间属性中进行绑定 MenuStrip       设置热键:在编辑的时候输入(&F)       设置快捷键:选中菜单项--右键属性--S ...

  5. MDI窗体容器--2016年12月15日

    MDI窗体容器 多文档界面(Multiple-Document Interface)简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单, ...

  6. 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件

    项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...

  7. WinForm 鼠标进入移开窗体事件,因子控件导致的误触发

    /// <summary> /// 重写OnControlAdded方法,为每个子控件添加MouseLeave事件 /// </summary> /// <param n ...

  8. (转)C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上

    原文地址:http://www.cnblogs.com/08shiyan/archive/2011/04/14/2015758.html /********************** * 课题:将窗 ...

  9. winfrom窗体中嵌套WPF控件

    前言 本文主要介绍如何在winfrom窗体中嵌套WPF控件, 一来是自己记录一下,而来希望能对有需要的朋友提供实现思路. 如有错误请指出...下面进入正题... -1.前期准备 准备一个建立好的win ...

随机推荐

  1. [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字

    Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...

  2. 【原创】Chrome最新版(53-55)再次爆出BUG!

    前言 今年十月份,我曾发布一篇文章<Chrome53 最新版惊现无厘头卡死 BUG!>,不过那个BUG在最新的 Chrome 54 中已经修正. 而今天即将发布的Chrome弱智BUG: ...

  3. 自己写的一个Pager分页组件,WebForm,Mvc都适用

    我一说写这个功能的时候,好多人估计有疑问.分页功能网上多的是,搜一个不就行了,你这样不是浪费时间么.你说这句话的时候,我是比较信的,首先自己写一些东西是很耗时,有这些时间又能多打几盘LOL了.但是我觉 ...

  4. C语言中函数的传入值与传出值

    看到一个函数的原型后,怎么样一眼看出来哪个参数做输入哪个做输出? 函数传参如果传的是普通变量(不是指针)那肯定是输入型参数: 如果传指针就有 2 种可能性了,为了区别,经常的做法是: 如果这个参数是做 ...

  5. Docker安装CentOS

    系统环境: 腾讯云公共镜像 CoreOS 7.1 X64 #docker 下载centos镜像docker  pull   centos   #下载centos所有的镜像docker  pull   ...

  6. Redis-Sentinel(Redis集群监控管理)

    Redis的高可用方案的实现:主从切换以及虚拟IP或客户端 从Redis 2.8开始加入对Sentinel机制从而实现了服务器端的主从切换,但目前尚未发现实现虚拟IP或客户端切换方案 Redis-Se ...

  7. openvpn 启动

    安装 yum -y install openvpn 配置文件可以放在: /etc/openvpn 例如,我这里的路径: [mslagee@centos-dev ~]$ cd /etc/openvpn/ ...

  8. 【web开发 | 移动APP开发】 Web 移动开发指南(2017.01.05更新)

    版本记录 - 版本1.0 创建文章(2016.12.30) - 版本1.1 更正了hybird相关知识:增加了参考文章(2017.01.05): + Web APP更正为响应式移动站点与页面,简称响应 ...

  9. win7里边使用telnet命令为什么提示telnet不是内部或外部命令,也不是可运行的程序或批处理文件

    Win7默认没有安装telnet功能,所以你直接用telnet命令是用不了的:你可以去“控制面板”-->“程序”(在左下角)--->“打开或关闭Windows功能”,勾上“telnet客户 ...

  10. A*寻路算法探究

    A*寻路算法探究 A*算法常用在游戏的寻路,是一种静态网路中求解最短路径的搜索方法,也是解决很多搜索问题的算法.相对于Dijkstra,BFS这些算法在复杂的搜索更有效率.本文在U3D中进行代码的测试 ...