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中只有结构是传递过来的,但是值却一个没有.是什么问题,代码哪里出错了?谢谢
{
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中只有结构是传递过来的,但是值却一个没有.是什么问题,代码哪里出错了?谢谢
你试试
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的值是否一样就知道哪里出的问题了...
int y = this.tbdt.Rows.Count;
{
//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;
}
}
在项目中添加新项 -> 类
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也会同步修改。这个应用先照做吧,相信会有帮助的。