C# 将值复制到其他单元格
我使用的DGV有许多列。某些列将为空白,用户需要手动填写这些列 但是,一些空白列具有需要填写的类似值 例如,如果我有以下数据: 。。。因此,对于第2行和第3行,有两个空白列(第3列和第8列) 因此,如果用户在第2行第3列中输入C# 将值复制到其他单元格,c#,datagridview,copy,row,C#,Datagridview,Copy,Row,我使用的DGV有许多列。某些列将为空白,用户需要手动填写这些列 但是,一些空白列具有需要填写的类似值 例如,如果我有以下数据: 。。。因此,对于第2行和第3行,有两个空白列(第3列和第8列) 因此,如果用户在第2行第3列中输入0402A。。由于0402的起始值匹配,它也将被输入第3行第3列。此外,如果用户在第2行第8列输入值12MM,也会发生同样的情况(如果行匹配,则会将其放入第3行第8列)。。。如下图所示: 1 0201 0201R 8X2 1 1 FUJI
0402A
。。由于0402的起始值匹配,它也将被输入第3行第3列。此外,如果用户在第2行第8列输入值12MM
,也会发生同样的情况(如果行匹配,则会将其放入第3行第8列)。。。如下图所示:
1 0201 0201R 8X2 1 1 FUJI 8MM
2 0402 0402A 8X2 1 1 FUJI 12MM //notice that only '0402A' was entered one time.
3 0402 0402A 8X2 1 1 FUJI 12MM //same with '12MM'
4 1650 1650C 8X2 1 1 FUJI 8MM
5 1650 1650C 8X2 1 1 FUJI 8MM
更好的解释:
第二列的值将是与每个输入值进行比较的值。每次在单元格中输入值时,它都会将该值复制到与原始第二列值相等的其他行中的同一列
问题:
- 这可能吗?我该怎么做
这是可能的。用户输入任何列后,您的程序只需遍历DGV的每一行,将第二列与编辑行进行比较,并相应地填写该列。编辑:我刚刚了解DGV==DataGridView…:)我没有这方面的经验,但你应该做类似的事情
private void dataGridView1_CellValueChanged( object sender, DataGridViewCellEventArgs e )
{
dataGridView1.CellValueChanged -= dataGridView1_CellValueChanged;
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
string key = row.Cells[1].Value.ToString();
foreach ( DataGridViewRow affected in dataGridView1.Rows)
{
if ( affected.Cells[1].Value.ToString( ) == key )
{
for ( int i=2; i < dataGridView1.Columns.Count; i++ )
{
affected.Cells[i].Value = row.Cells[i].Value;
}
}
}
dataGridView1.CellValueChanged += dataGridView1_CellValueChanged;
}
private void dataGridView1\u CellValueChanged(对象发送方,DataGridViewCellEventArgs e)
{
dataGridView1.CellValueChanged-=dataGridView1\u CellValueChanged;
DataGridViewRow行=dataGridView1.Rows[e.RowIndex];
string key=row.Cells[1]。Value.ToString();
foreach(dataGridView1.Rows中受影响的DataGridViewRow)
{
if(受影响的.Cells[1].Value.ToString()==key)
{
对于(int i=2;i
您有什么代码给我们看吗?所以我们可以帮你找到问题。@Blau:刚刚更新了question@Bolu:还没有可靠的代码。。还在弄清楚这一点的过程中,我如何检查用户何时输入了一列,然后将该列与其他列进行比较?我在想一个CellValueChanged
eventargs。。但是我想你也需要使用e.ColumnIndex来限制受影响的列数。
private void dataGridView1_CellValueChanged( object sender, DataGridViewCellEventArgs e )
{
dataGridView1.CellValueChanged -= dataGridView1_CellValueChanged;
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
string key = row.Cells[1].Value.ToString();
foreach ( DataGridViewRow affected in dataGridView1.Rows)
{
if ( affected.Cells[1].Value.ToString( ) == key )
{
for ( int i=2; i < dataGridView1.Columns.Count; i++ )
{
affected.Cells[i].Value = row.Cells[i].Value;
}
}
}
dataGridView1.CellValueChanged += dataGridView1_CellValueChanged;
}