C# 将值复制到其他单元格

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

我使用的DGV有许多列。某些列将为空白,用户需要手动填写这些列

但是,一些空白列具有需要填写的类似值

例如,如果我有以下数据: 。。。因此,对于第2行和第3行,有两个空白列(第3列和第8列)

因此,如果用户在第2行第3列中输入
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;
        }