• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# Przekazanie listy obiektów z jednego formularza do drugiego (Oba istnieją) Visual Studio Windows Forms app

Object Storage Arubacloud
0 głosów
395 wizyt
pytanie zadane 1 stycznia 2021 w C# przez j.cob_21 Początkujący (350 p.)

Cześć,
Mam dwa formularze (usercontrol - kontrolki użytkownika), obydwa już istnieją i są umieszczone na głównym okienku (Form1), wszystkie je zaprojektowałem używając textboxów, checklist itd (po prostu kontrolek).
Kontrolki użytkownika które są umieszczone na głównym formularzu cały czas istnieją - jedynie się chowają lub pokazują po naciśnięciu przycisku dzięki metodzie (.Hide lub .Show).
I teraz tak:
W kontrolce użytkownika o nazwie production_usercontrol mam klasę, o nazwie items_done która dziedziczy z klasy o nazwie production_ordered(ta klasa również jest w w/w kontrolce użytkownika) atrybut type który określa typ zamówionego przedmiotu(np sprężyna), w momencie w którym dwa atrybuty klasy (tick_start oraz production_time_objproduction_ordered będą sobie równe.
Następnie każdy obiekt klasy items_done przekazuję do listy o nazwie list_of_items_done.
Ja potrzebuję uzyskać dostęp do całej listy obietków list_of_items_done z innej kontrolki użytkownika w której będą przechowywane dane o tym ile obiektów/przedmiotów jest dostępnych w magazynie - które będę chciał przechowywać w postaci int przedmiot1 = coś tam gdzie do tej zmiennej będę dodawał lub odejmował liczby przy pomocy atrybuty type.
Jak przekazać dane z tej listy - a najlepiej całą listę do innej kontrolki bez czegoś w rodzaju new form - bo ja nie chcę ani nie potrzebuję tworzenia nowego formularza/kontrolki użytkownika skoro ona już istnieje.

Mam z kolei podobny problem np. z atrybutem cost(jest to aktrybut klasy production_ordered umieszczonej w kontrolce production_usercontrol) który przedstawia ile pieniędzy kosztuje jakiś przedmiot, w formularzu głównym Form1 przetrzymuję zaś wartość int money od której będę odejmował własnie wartość cost - w momecie gdy obiekt klasy production_ordered zostanie utworzony (czyli np na event Button_Click w którym zawarte jest tworzenie obiektów klasy production_ordered )natomiast nie wiem jak mam przekazać dane o atrybucie cost  do Form1 tylko i wyłącznie raz kiedy nowy obiekt jest utworzony.

Poniżej jest kod klasy production_ordered oraz wywołanie jego konstruktora:

 

 //#### KONTROLKA UŻYTKOWNIKA production_user_control
public class production_ordered
        {
            public int production_time_obj; // A
            public int par_quan; // B
            public int lin_quan; //C
            public string type; //D
            public int ID_prd;
            public int tick_start;
            public string status;
            public int cost;

            public void Ordered_prd(int A, int B, int C, string D, int ID, int prd_tick_start_val, string prd_status, int cost)
            {
                
                this.production_time_obj = A;
                this.par_quan = B;
                this.lin_quan = C;
                this.type = D;
                this.ID_prd = ID;
                this.tick_start = prd_tick_start_val;
                this.status = prd_status;
                this.cost = cost;
               }

              //{jakiś kod tutaj który pobiera dane "cost", checkedItemtext i production time na podst. zaznaczonego itemu w checkliscie}
              

 List<dynamic> ordprd = new List<dynamic>();
        
        int id=0;
        int count_control = 1;
        public void button1_Click_1(object sender, EventArgs e)
        {
//#######################################################################################
            int a = production_time;

            bool ol;
            int b;
            ol = int.TryParse(Parallel_quantity.Text, out b );

            bool rec;
            int c;
            rec = int.TryParse(Linear_quantity.Text, out c ) ;


            string d = checkedItemText;
            id++;

            int tck_start_btn = 0;

            string production_status = "inproduction";

            int itemcost = item_cost;

            production_ordered prod= new production_ordered();
            prod.Ordered_prd(a, b, c, d, id, tck_start_btn, production_status, item_cost);

            
            ordprd.Add(prod);

            //....
            //....   jakiś kod dalej
            //...
}


Poniżej kod drugiej klasy items_done wywołanie konstruktora oraz dziedziczenie atrybutów
 

 //#### KONTROLKA UŻYTKOWNIKA production_user_control

public class items_done 
        {
            public string type;
            public int quantity;
            

            public void items_done_fcn(string type, int quantity) 
            {
                this.type = type;
                this.quantity = quantity;
                
            }


        }

        List<dynamic> list_of_items_done = new List<dynamic>();

        private void Control_timer_Tick(object sender, EventArgs e)
        {
            if (ordprd.Count > 0)
            {
                for (int i = 0; i < ordprd.Count; i++)
                {

                    if((ordprd[i].tick_start < ordprd[i].production_time_obj)&&(ordprd[i].status != "inproduction"))
                    {
                        ordprd[i].tickstart = ordprd[i].tick_start + 1;
                    }else if((ordprd[i].tick_start = ordprd[i].production_tiime_obj)&&(ordprd[i].status != "inproduction"))
                    {
                        items_done itm = new items_done();
                        itm.items_done_fcn(ordprd[i].type, 1000);
                        list_of_items_done.Add(itm);

                        ordprd[i].status = "done";
                    }else if(ordprd[i].status == "inproduction")
                    {

                    }

                }
            }
            else { }
        }


Bardzo proszę o pomoc w tym temacie bo kompletnie utknąłem.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 131 wizyt
pytanie zadane 28 sierpnia 2020 w C# przez Kacperxoo Początkujący (330 p.)
0 głosów
0 odpowiedzi 171 wizyt
+1 głos
0 odpowiedzi 322 wizyt

92,556 zapytań

141,404 odpowiedzi

319,562 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...