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_obj) production_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.