Witam forumowiczów.
Mam otóż następujący problem. Na sam pierw może dam przykłady kodu, który udało mi się napisać. Z góry proszę o raczej łapatologiczne tłumaczenie, nie mam wielkiego doświadczenia w programowaniu, C# dopiero zaczyna,

Klasa NowaFaktura z której wywoływana jest nowa forma DodajPozycje.

public List<CopyDataGrid> Values { get; set; }

public void DodajWartosci(List<CopyDataGrid> val)
        {
            if (val != null)
            {
                foreach (CopyDataGrid item in val)
                {
                    
                    int n = dataGridViewPozycjeNowejFaktury.Rows.Add();

                    dataGridViewPozycjeNowejFaktury.Rows[n].Cells[0].Value = item.NazwaCopy;
                    dataGridViewPozycjeNowejFaktury.Rows[n].Cells[1].Value = item.Cena_nettoCopy;
                    dataGridViewPozycjeNowejFaktury.Rows[n].Cells[2].Value = item.Cena_bruttoCopy;
                    dataGridViewPozycjeNowejFaktury.Rows[n].Cells[3].Value = item.IloscCopy;
                }
                dataGridViewPozycjeNowejFaktury.Update();
                dataGridViewPozycjeNowejFaktury.Refresh();
                this.Refresh();
                this.Update();

            }
        }

public void wywowaleniZapiszPozycje()
        {
            DodajWartosci(Values);
        }

Metoda z klasy DodajPozycje.

private void buttonSaveAddPositions_Click(object sender, EventArgs e)
        {
            NowaFaktura nowaFaktura = new NowaFaktura();


            List<CopyDataGrid> copydatagrids = new List<CopyDataGrid>();
            foreach (DataGridViewRow item in dataGridViewDPTowary.Rows)
            {
                if ((string)item.Cells[0].Value.ToString().ToLower() == "true")
                {
                    copydatagrids.Add(new CopyDataGrid
                    {
                        NazwaCopy = item.Cells[2].Value.ToString(),
                        Cena_nettoCopy = item.Cells[3].Value.ToString(),
                        Cena_bruttoCopy = item.Cells[4].Value.ToString(),
                        IloscCopy = item.Cells[5].Value.ToString(),

                    });

                    NowaFaktura nowafaktura = new NowaFaktura();

                    nowafaktura.Values = copydatagrids;
                    nowafaktura.wywowaleniZapiszPozycje();

                   // Form1 form1 = new Form1();
                   // form1.Values = copydatagrids;
                    //form1.Show();

                }
            }
            nowaFaktura.dataGridViewPozycjeNowejFaktury.Refresh();
            nowaFaktura.Refresh();
        }

I klasa pośrednicząca w kopiowaniu CopyDataGrid

public class CopyDataGrid
    {
        public string NazwaCopy { get; set; }
        public string Cena_nettoCopy { get; set; }
        public string Cena_bruttoCopy { get; set; }
        public string IloscCopy { get; set; }
    }

Sprawa wygląda następująco. W formie NowaPozycja jest DataGridView (dataGridViewPozycjeNowejFaktury) do której chcę skopiować zaznaczone checkboxem wiersze z DataGridView (dataGridViewDPTowary).
Próbowałem już chyba z 4 metod. I ten sposób wyżej wydaje mi się najbardziej elegancki. Sposób w pełni działa jeśli z klasy DodajPozycje wywołam nowy formularz z DataGridView i do niego wyślę te wartości wszystko jest ok. Tak samo jak np. przyciskiem skopiuję w formularzu DodajPozycję z jednego DataGridView do drugiego na tym samym formularzu.
Problem jest taki, że żaden sposób za żadne skarby nie chce mi działać wstecz, tj. z DodajPozycje skopiowanie wiersza do NowaFaktura, z której ta DodajPozycje była wywołana.
Wiem, że to chaotyczne, wiem że nazewnictwo tragiczne, ale chce mieć pierw działające rozwiązanie a później nazewnictwo będę poprawiał i formatował i komentował kod tak, żeby to miało ręce i nogi.
Ma ktoś jakiś pomysł? Dodam, że debugger pokazuje praktycznie to samo czy to dla form1, gdzie to działa czy dla NowaFaktura. Program nie zwraca żadnego błędu. Po prostu wszystko się ładnie wykonuje, w Form1 wiersz się kopiuje, a DataGridView w NowaFaktura pozostaje niewzruszona...
W czym może być problem? Macie może jakieś wskazówki, lub ktoś też miał podobny problem?
Z góry dziękuję za jakąkolwiek pomoc bo już mi się pomysły skończyły.