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 = "要对应显示的数据源列名";

时间: 2024-10-11 00:16:41

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

对话框控件--2016年12月11日

打开对话框-----OpenFileDialog 1 //打开文件对话框 2 OpenFileDialog openFile = new OpenFileDialog(); 3 openFile.Title = "请选择要打开的文件"; //对话框标题 4 openFile.Multiselect = true; //设置对话框可以多选 5 openFile.InitialDirectory = @"C:\Users\tufeiax\Desktop";//获取对话框

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

Button text:修改按钮显示的文字 CheckBox Checked:是否选中 CheckedListBox checkedListBox.Items.Add(显示的值,初始选中状态); checkedListBox.SetItemChecked(第几项, 设置选中状态); DateTimePicker dateTimePicker.Text: 取出来的时间是字符串 dateTimePicker.Value: 取出来的时间为DateTime Label Text:需要显示的文字 Link

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

MDI窗体容器 多文档界面(Multiple-Document Interface)简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单,用于在窗口或文档之间进行切换. (1)首先要设定主窗体是一个MDI窗体的容器,因为只有如此才能够在此主窗体上面添加MDI窗体,从而实现对MDI编程,具体实现语句如下: 1 this.IsMdiContainer = true ; (2)在主窗体上面新建一个MDI窗体.在程序中,新建一个MDI窗体的命

C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序 2.效果图: 如下图所示,多窗体嵌套,其中一个是父窗体,其条是子窗体. 横向排列下面的窗体: 纵向排列下面的窗体: 关闭全部子窗

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

1 /// <summary> 2 /// 重写OnControlAdded方法,为每个子控件添加MouseLeave事件 3 /// </summary> 4 /// <param name="e"></param> 5 protected override void OnControlAdded(ControlEventArgs e) 6 { 7 Control control = e.Control; // 获取添加的子控件 8 c

如何控制其他程序窗体上的窗口控件

用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是回调函数.我的理解是这样的:回调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等等之类的.但是什么时候被调用却不知道了.回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的形式传递参数.所以很多人打比方,说回调函数还真有点像您随身带的BP机:告诉别人

C#实现窗体拖动时各个控件同比自动放缩大小

实现方式主要是利用panel控件为主题,对于每个控件的大小位置和字体这几个属性进行记录, 然后根据窗体改变的大小同时放缩. 简要步骤如下: 1 创建C#窗体程序项目. 2  Panel放置到窗体. 3  设置属性dock为fill. 4  注意MinnumSize不能设置为0, 改成大于0都行. public partial class FrmDemo : Form { double dFrmWidth; double dFrmHeight; double dZoomHorizon; doubl

C#窗体加载和控件加载不同步导致控件闪烁

窗体加载和控件加载不同步导致的控件闪烁现象:// 代码块加在父窗体中的任意位置,解决窗体加载和控件加载不同步导致的控件闪烁问题        protected override CreateParams CreateParams        {            get            {                CreateParams cp = base.CreateParams;                cp.ExStyle |= 0x02000000;     

C# winform窗体简单保存界面控件参数到xml

原文:C# winform窗体简单保存界面控件参数到xml 引用网上的 XMLHelper 地址 :https://www.cnblogs.com/chnboy/archive/2009/04/02/1427652.html 稍做修改 using System; using System.Linq; using System.Xml; namespace FormTest { /// <summary> /// XMLHelper XML文档操作管理器 /// </summary>