• C# WinForm DataGridView取当前行和窗体之间传值或调方法


    DataGridView获取当前行代码

    int rows = this.dgv_Info.CurrentCell.RowIndex;//获取当前选中的行

    DataGridView获取当前选中行的某列值

    string code = this.dataGridView.CurrentRow.Cells["列名"].Value.ToString(); 

    窗体之间传值

    本次示例效果如下:
    Form1为父窗体(包含textBox1、button1)
    Form2为子窗体(包含textBox2、button2)

    父窗体给子窗体传值
    ==================
    1.点击Form1的button1 打开Form2
      父窗体给子窗体传值 可以调用重载子窗体的构造函数 直接传入相关数值

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2(this.textBox1.Text);
                frm2.Show();
            }
        }

        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }

            public Form2(string strTextBox1Text)
            {
                InitializeComponent();
                this.textBox2.Text = strTextBox1Text;
            }
        }

    2.点击Form1的button1 打开Form2
      并调用子窗体Form2的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2
     
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();
                frm2.TextBox2Text = this.textBox1.Text;
                frm2.Show();
            }
        }

        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }

            public string TextBox2Text
            {
                set { this.textBox2.Text = value; }
                get { return this.textBox2.Text; }
            }       
        }
      
    3.点击Form1的button1 打开Form2
      在Form2_Load调用父窗体Form1的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            public string TextBox1Text
            {
                set { this.textBox1.Text = value; }
                get { return this.textBox1.Text;  }
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();
                frm2.Show(this);//或 frm2.ShowDialog(this);

                ////或者
                //Form2 frm2 = new Form2();
                
    //frm2.Owner = this;
                
    //frm2.Show();//或 frm2.ShowDialog();
            }
        }
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }

            private void Form2_Load(object sender, EventArgs e)
            {
                Form1 frm1 = (Form1)this.Owner;
                this.textBox2.Text = frm1.TextBox1Text;
            }
        }

    子窗体给父窗体传值
    ==================
    4.点击Form1的button1 打开Form2
      再点击Form2的button2 
        在button2_Click事件中 通过this.Owner将Form2的textBox2的值设置给Form1的textBox1
        并关闭Form2

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();
                frm2.Show(this);//或 frm2.ShowDialog(this);

                ////或者
                //Form2 frm2 = new Form2();
                
    //frm2.Owner = this;
                
    //frm2.Show();//或 frm2.ShowDialog();
            }
        }

        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }

            private void button2_Click(object sender, EventArgs e)
            {
                Form1 frm1 = (Form1)this.Owner;
         //注意 如果textBox1是放在panel1中的 则先找panel1 再找textBox1
                ((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;
                this.Close();
            }
        }

    5.点击Form1的button1 打开Form2
      再点击Form2的button2 
        在button2_Click事件中 通过this.Owner及调用父窗体Form1的公开属性或方法 
                              将Form2的textBox2的值设置给Form1的textBox1
        并关闭Form2
     
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            public string TextBox1Text
            {
                set { this.textBox1.Text = value; }
                get { return this.textBox1.Text;  }
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();
                frm2.Show(this);//或 frm2.ShowDialog(this);

                ////或者
                //Form2 frm2 = new Form2();
                
    //frm2.Owner = this;
                
    //frm2.Show();//或 frm2.ShowDialog();
            }
        }

        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }

            private void button2_Click(object sender, EventArgs e)
            {
                Form1 frm1 = (Form1)this.Owner;
                frm1.TextBox1Text = this.textBox2.Text;
                this.Close();
            }
        }

     两个窗体之间调用方法

    比如A窗体是父窗体有DataGridView,B窗体是添加窗体,当添加完成后A窗体的DataGridView刷新绑定。

    首先在A窗体SHOW出B窗体的时候要加上

    A.Owner = this;

    在B窗体调用A窗体绑定DataGridView的方法

    A a = (A)this.Owner;

    a.DataGridView的绑定方法

  • 相关阅读:
    《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
    HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树
    Android网络框架-Volley实践 使用Volley打造自己定义ListView
    Unity3D的ugui之按钮事件
    【Stage3D学习笔记续】真正的3D世界(六):空间大战
    【AwayPhysics学习笔记】:Away3D物理引擎的简介与使用
    【Away3D代码解读】(五):动画模块及骨骼动画
    【Away3D代码解读】(四):主要模块简介
    【Stage3D学习笔记续】真正的3D世界(五):粒子特效
    【Stage3D学习笔记续】真正的3D世界(四):空间大战雏形
  • 原文地址:https://www.cnblogs.com/junjie94wan/p/2225767.html
Copyright © 2020-2023  润新知