winform 两个窗体之间来回传值/相互传值

来源:互联网 发布:protobuf.js 教程 编辑:程序博客网 时间:2024/05/16 18:04
父窗体,选择行,得到当前行,传递给子窗体,一般通过 子窗体构造函数,加参数传递,参数少,可直接传 某个要修改的值,如果 修改的多,一般都是取出当前行 ,进行传递。
C# code
?
1
2
3
4
5
6
7
8
9
10
11
12
            //得到你选定的某行
           DataRow row = dt.Rows[0];
           Form2 frm = new Form2(row);
           frm.ShowDialog();
           if (frm.iResult == 1)
           {
               //把修改后的行保存回当前选中行
               dt.Rows[0][1] = frm.Row[1];
               dt.Rows[0][2] = frm.Row[2];
               dt.Rows[0][3] = frm.Row[3];
           }


子窗体得到 父窗体 的行,为了要 传回去,那么需要定义公有变量,Row
然后把 传递过来的行显示到 界面的控件上,用户就可以修改了
修改完,保存回当前行里,为了判断用户是否点击了保存按钮,增加了一个 变量iResule 默认0,没有保存过,当点了保存后,设置为1 。
窗体关闭后
父窗体,判断子窗体的iResule ==1,那么把子窗体的行 更新到选中行里

C# code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  public partial class Form2 : Form
    {
     
        public DataRow Row ;
        public int iResult = 0;
        //构造函数
        public Form2(DataRow row)
        {
            InitializeComponent();
            Row = row;
            initData();
        }
        //初始化数据
        private void initData()
        {
            this.textBox1.Text = Row[1].ToString();
            this.textBox2.Text = Row[2].ToString();
        }
        private void button1_Click(object sender, EventArgs e)
        {//保存按钮
            Row.BeginEdit();
            Row[1] = this.textBox1.Text;
            Row[2] = this.textBox2.Text;
            Row.EndEdit();
            iResult = 1;
        }
  
    }
0 0
原创粉丝点击