A界面的:
{
private DataTable dt = new DataTable();
public ChildForm()
        {
            InitializeComponent();
            dt.Columns.Add("姓名");
            dt.Columns.Add("班级");
        }private void button2_Click(object sender, EventArgs e)
        {
            DataRow dr = dt.NewRow();
            dr["姓名"] = textBox2.Text.ToString().Trim();
            dr["班级"] = textBox3.Text.ToString().Trim();
            dt.Rows.Add(dr);            dataGridView1.DataSource = this.dt;
        }private void button4_Click(object sender, EventArgs e)
        {
            B tb = new B(dt);
            tb.ShowDialog();
        }
}
B界面:
{
        private DataTable tbdt = new DataTable();        public table值传递(DataTable dt)
        {
            InitializeComponent();
            this.tbdt = dt;
        }        private void table值传递_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = this.tbdt;
        }
}
里面的一些基本东西我是省略了的,比如类的定义这些.
我的意思是在A界面生成一个datatable,然后把这个dt传给B界面,在B界面的datagridview中显示相同的datatable值.
但是执行是B的datagridview中只有结构是传递过来的,但是值却一个没有.是什么问题,代码哪里出错了?谢谢

解决方案 »

  1.   

    我没发现有什么问题...
    你试试
    A里
    private void button4_Click(object sender, EventArgs e)
            {
                B tb = new B(dt);
                int i = dt.Rows.Count;
                tb.ShowDialog();
            }
    B里
            public table值传递(DataTable dt)
            {
                InitializeComponent();
                int x = dt.Rows.Count;
                this.tbdt = dt;
                int y = dt.Rows.Count;
            }分别看看i,x,y的值是否一样就知道哪里出的问题了...
      

  2.   

    错了
                int y = this.tbdt.Rows.Count;
      

  3.   

    B界面:
    {
        //private DataTable tbdt = new DataTable(); //这里没理由再new一个DataTable;
        private DataTable tbdt; //这样就够了。
        public table值传递(DataTable dt)
        {
                InitializeComponent();
                this.tbdt = dt;
        }    private void table值传递_Load(object sender, EventArgs e)
        {
                dataGridView1.DataSource = this.tbdt;
        }
    }
      

  4.   

    vs2005,你可以用以下步骤顺便熟悉一下Data Binding,数据绑定。
    在项目中添加新项 -> 类
    1.
    // Class1.cs的内容
    ...
    using System.ComponentModel;
    class Class1 : INotifyPropertyChanged
    {
            private string xingming;
            private string banji;
            public event PropertyChangedEventHandler PropertyChanged;
            
            public Class()
            {
               //必须要有这个空构造函数,不然以后无法增加新行。
            }
            public Class1(string name, string age)
            {
               this.xingming = name;
               this.banji = age;
            }
            public string Xingming
            {
                get { return xingming; }
                set { 
                    xingming = value;
                    OnPropertyChanged("Xingming");
                }
            }       
            public string Banji
            {
                get { return banji; }
                set { 
                    banji = value;
                    OnPropertyChanged("Banji");
                }
            }        private void OnPropertyChanged(string propName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propName));
                }
            }}
    * 下一步骤之前生成一下。2. "数据"->“显示数据源”-》“添加数据源”-》“对象”-》选定"Class1"->完成。3. 数据源窗口中会显示 Class1及其成员:Baiji和Xingming4. 把一个DataGridView拖到Form上,数据源指定为:Class1
    (在这里可以通过属性面板的Columns把DataGridView上对应字段的HeaderText设置为汉字)5.把数据源窗口的Baiji, Xingming字段拖到Form上。设计器会自动生成对应label及TextBox.6.把一个BindingNavigator拖到Form上,BindingSource属性指定为class1BindingSource。7.拖一个button到Form上,在button1_Click里
     for(int i = 0; i < 10; i++)
    {
            class1BindingSource.Add(new Class1("姓名" + i, "班级" + i));
    }8.项目增加一个Form,名为Form2, Form2上放置一个dataGridView1.
    //Form2.cs
    private BindingSource bs;
    //增加一个构造函数
    public Form2(BindingSource bs)
                : this()
    {
                this.bs = bs;
    }
    private void Form2_Load(object sender, EventArgs e)
    {
                dataGridView1.DataSource = bs;
    }
    9.Form1里再拖一个button,也就是button2,在它的button2_Click里
    Form2 form2 = new Form2(class1BindingSource);
    form2.Show();*你会发现在Form1里通过BindingNavitor增加新行,或者修改删除Form1的dataGridView1时Form2的dataGridView1也会同步修改。这个应用先照做吧,相信会有帮助的。