Windows Forms中的数据传递

近日在做windows Forms程序中,发现以前用来传递数据的方法一直不是很适当,经过研究,发现在被调用的Forms里边加入私有成员,然后构造一个带参数的构造函数,可以很方便的将主窗体中的数据传送过来,尤其对于数据库方面的编程,通过定义数据访问层对象或者datarow对象,能更方便的对数据进行RUID操作,效果不错。

Form1的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DatasetTest
{
    
public partial class Form1 : Form
    
{
        
//public tdsCustomersTableAdapters.CustomersTableAdapter  dsc;
        
//tdsCustomers.CustomersDataTable tdc;
        private TestDataAccess td = new TestDataAccess();
        
public Form1()
        
{
            InitializeComponent();
        }


        
private void Form1_Load(object sender, EventArgs e)
        
{
            
//dsc =new DatasetTest.tdsCustomersTableAdapters.CustomersTableAdapter();

            
//tdc = dsc.GetData();
            
//dataGridView1.DataSource = tdc;

            
//using (TestDataAccess tda = new TestDataAccess())
            
//{
            
//    dataGridView1.DataSource = tda.RetiereCustmoers();
            
//}
            dataGridView1.DataSource = td.RetiereCustmoers();
            
        }


        
private void button1_Click(object sender, EventArgs e)
        
{
           
            
//DataRow dr = tdc.Rows[dataGridView1.SelectedRows[0].Index];

      
            
//Form2 fm = new Form2();
            
//fm.dr2 = dr;
            
//if (DialogResult.OK == fm.ShowDialog())
            
//{
            
//    dr = fm.dr2;
            
//    dsc.Update(dr);
            
//    dataGridView1.DataSource = dsc.GetData();
            
//}
            
//MessageBox.Show(
            
//    dataGridView1.Rows[2].Cells[0].ToString());
            int rowindex = dataGridView1.CurrentRow.Index;
            
int taskIDColumnIndex = dataGridView1.Columns["CustomerId"].Index;
            
//string xinxi = rowindex.ToString();
            
//xinxi = xinxi + "  其中" + dataGridView1[taskIDColumnIndex, rowindex].Value.ToString();
            
//MessageBox.Show(xinxi);
            string customersid = dataGridView1[taskIDColumnIndex, rowindex].Value.ToString();
            dsNorthwind.CustomersRow dcr 
= td.RetiereCustomersRow(customersid);
            
//MessageBox.Show(dcr.CustomerID+dcr.CompanyName);
            Form2 fm2 = new Form2(td,dcr);
            
if (DialogResult.OK == fm2.ShowDialog())
            
{
                td.UpdateCustomers(dcr);
            }

            dataGridView1.DataSource 
= td.RetiereCustmoers();

        }


        
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        
{

        }


        
private void dataGridView1_DoubleClick(object sender, EventArgs e)
        
{

            
//DataRow dr = tdc.Rows[dataGridView1.SelectedRows[0].Index];


            
//Form2 fm = new Form2();
            
//fm.dr2 = dr;
            
//if (DialogResult.OK == fm.ShowDialog())
            
//{
            
//    dr = fm.dr2;
            
//    dsc.Update(dr);
            
//    dataGridView1.DataSource = dsc.GetData();
            
//}
        }


        
private void button2_Click(object sender, EventArgs e)
        
{
            
//dsc.DeleteByCustomerId(tdc.Rows[dataGridView1.SelectedRows[0].Index][0].ToString());
            
//dataGridView1.DataSource = dsc.GetData();
            
//DataRow drinsert =tdc.NewRow();
            
//drinsert[0] = "test";
            
//drinsert[1] = "test1";
            
//dsc.Update(drinsert);
            
//tdsCustomers.CustomersRow tcr = tdc.NewCustomersRow();
            
//tcr.CustomerID = "test";
            
//tcr.CompanyName = "testonce";
            
//tdc.Rows.Add(tcr);
            
//dsc.Update(tcr);
            
//dataGridView1.DataSource = dsc.GetData();
            


            
        }

    }


}

Form2的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DatasetTest
{
    
public partial class Form2 : Form
    
{
        
private TestDataAccess td;
        
private dsNorthwind.CustomersRow dcr;
        
//public DataRow dr2;
        public Form2()
        
{
            InitializeComponent();
        }

        
public Form2(TestDataAccess td1, dsNorthwind.CustomersRow dcr1)
        
{
            InitializeComponent();
            td 
= td1;
            dcr 
= dcr1;
        }

      
        
private void Form2_Load(object sender, EventArgs e)
        
{
            
//textBox1.Text = dr2[0].ToString();
            
//textBox2.Text = dr2[1].ToString();
            textBox1.Text = dcr.CustomerID;
            textBox2.Text 
= dcr.CompanyName;

        }


        
private void button1_Click(object sender, EventArgs e)
        
{
            
//dr2[1] = textBox2.Text;
            dcr.CompanyName = textBox2.Text;
        }


        
private void button2_Click(object sender, EventArgs e)
        
{
            
this.Close();
            DialogResult 
= DialogResult.Cancel;
        }


    }

}

posted on 2006-04-15 14:33  c#之旅  阅读(792)  评论(0编辑  收藏  举报

导航