首页 > 代码库 > WindowsForm多窗体、多窗体传值、控件数据绑定--2016年12月8日

WindowsForm多窗体、多窗体传值、控件数据绑定--2016年12月8日

多窗体

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日