• 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

Mały hosting, OGROMNE możliwości
0 głosów
661 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ź 336 wizyt
pytanie zadane 28 sierpnia 2020 w C# przez Kacperxoo Początkujący (330 p.)
0 głosów
0 odpowiedzi 479 wizyt
+1 głos
0 odpowiedzi 451 wizyt

93,715 zapytań

142,629 odpowiedzi

323,260 komentarzy

63,257 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...