两个窗体中datagridview互相传值,从A窗口将选中行传递到B窗口 我也有想过这个思路,我的表有主键,所以可以获取主键再到数据库检索然后显示。但是这样太浪费资源了^直接传个datarow[ ]数据集过去呗.然后另一个窗口接收到这个数据集,就add到自己的表里. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 定义一个类 把 选中 行的值 付给你定义的类点击确定的时候用 定义的类 分别给 form1 的dgv赋值 我也有想过这个思路,我的表有主键,所以可以获取主键再到数据库检索然后显示。但是这样太浪费资源了^如果嫌浪费资源,就从DGV中获取这一列的值,一个个赋值到单元格中,不过感觉太麻烦了 private void button1_Click(object sender, EventArgs e) { Form3 f = new Form3(); if (f.ShowDialog() == DialogResult.OK) { DataGridViewSelectedRowCollection selectedRows = f._selectedRows; foreach (DataGridViewRow row in selectedRows) { int index = this.dataGridView1.Rows.Add(); for (int i = 0; i < row.Cells.Count; i++) { this.dataGridView1.Rows[index].Cells[i].Value = row.Cells[i].Value; } } } } public Form3() { InitializeComponent(); } public DataGridViewSelectedRowCollection _selectedRows; private void Form3_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("A"); dt.Columns.Add("B"); dt.Columns.Add("C"); dt.Columns.Add("D"); dt.Columns.Add("E"); for (int i = 0; i < 10; i++) { DataRow dr = dt.NewRow(); dr["A"] = "A" + i; dr["B"] = "B" + i; dr["C"] = "C" + i; dr["D"] = "D" + i; dr["E"] = "E" + i; dt.Rows.Add(dr); } dataGridView1.AutoGenerateColumns = false; dataGridView1.DataSource = dt; } private void btnAdd_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count == 0) { MessageBox.Show("请选择列表数据!"); return; } _selectedRows = dataGridView1.SelectedRows; this.DialogResult = DialogResult.OK; } private void txtOrderCode_TextChanged(object sender, EventArgs e) { string orderCode=txtOrderCode.Text.Trim(); foreach (DataGridViewRow dr in dataGridView1.Rows) { dr.Selected = false; if (dr.Cells["A"].Value.ToString() == orderCode) { dr.Selected = true; } } } 发现委托注册的两种方法,有区别没? 求大神解 using Excel报错 关于用csla框架开发分布式系统 求助:c#做的系统,access做后台数据库,运行效率慢 .Net软件在Wndows 7平台下有优势吗? C#Socket编程的问题,关到窗体显示的关闭的.... xml问题 C#如何得到数据库中某个表的记录条数 关于C#编写的Socket客户端与C编写的服务器端的连接问题 网页路径问题,为什么图片都无法正常显示呢?高手请进! com对象的指针传递 设计一个数据结构的问题
把 选中 行的值 付给你定义的类
点击确定的时候
用 定义的类 分别给 form1 的dgv赋值
我也有想过这个思路,我的表有主键,所以可以获取主键再到数据库检索然后显示。但是这样太浪费资源了^如果嫌浪费资源,就从DGV中获取这一列的值,一个个赋值到单元格中,不过感觉太麻烦了
{
Form3 f = new Form3();
if (f.ShowDialog() == DialogResult.OK)
{
DataGridViewSelectedRowCollection selectedRows = f._selectedRows;
foreach (DataGridViewRow row in selectedRows)
{
int index = this.dataGridView1.Rows.Add();
for (int i = 0; i < row.Cells.Count; i++)
{
this.dataGridView1.Rows[index].Cells[i].Value = row.Cells[i].Value;
}
}
}
} public Form3()
{
InitializeComponent();
}
public DataGridViewSelectedRowCollection _selectedRows; private void Form3_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("A");
dt.Columns.Add("B");
dt.Columns.Add("C");
dt.Columns.Add("D");
dt.Columns.Add("E");
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["A"] = "A" + i;
dr["B"] = "B" + i;
dr["C"] = "C" + i;
dr["D"] = "D" + i;
dr["E"] = "E" + i;
dt.Rows.Add(dr);
}
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = dt;
} private void btnAdd_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count == 0)
{
MessageBox.Show("请选择列表数据!");
return;
}
_selectedRows = dataGridView1.SelectedRows;
this.DialogResult = DialogResult.OK;
} private void txtOrderCode_TextChanged(object sender, EventArgs e)
{
string orderCode=txtOrderCode.Text.Trim();
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
dr.Selected = false;
if (dr.Cells["A"].Value.ToString() == orderCode)
{
dr.Selected = true;
}
}
}