DataGrindView: jakie zdarzenie do wyciągnięcia informacji z zdarzenia?

0

Witam.
Tworzę prosty formularz Vat w C#.
Wytłumaczę co chcę zrobić.
Mam jedną klasę w której przechowuje dane z formularza, czyli to co użytkownik wpisze do pustych textboxow np informacje o kupującym.
Wydobywam informacje o zmianie jakieś w wartości w jakimś texboxie za pomocą zdarzenia OnChange i zapisuje do danego pola w klasie.
Wzoruje się wyglądem mniej więcej na tym linku: https://wfirma.pl/css/public/images/home/faktura-koncowa.png
Szczęśliwie dodawałem dalej texboxy, tylko pojawił się problem na samym końcu. To znaczy tabelka pod zamówieniem, w której docelowo obmyśliłem, że będą wpisane produkty oraz ceny. Znalazłem coś takiego jak DataGrindView tylko nie wiem jak wydobyć jakieś dane z takiej konstrukcji oraz jak zapisać to w klasie? Za pomocą jakiego zdarzenia?
A może polecacie inny jakiś komponent, który nada się o wiele lepiej na te zadanie?

0

Możesz użyć BindingList: http://msdn.microsoft.com/pl-pl/library/ms132679(v=vs.110).aspx

var pozycje= new BindingList<Pozycja>();
datagridView.DataSource = pozycje;

W twoim przypadku wystarczyło by zaczytać wszystkie dane po całkowitym wypełnieniu faktury jak ktoś kliknie przycisk "Zapisz". Nie ma potrzeby ładować wszystko przy każdej zmianie.

Ale proponuję ogólnie zainteresować się tematem wzorca MVP i jak go używać w WinFormsach. Bo zabawa ze zdarzeniami i wywoływanie na każdym textboxie zdarzenia OnChange to kiepski pomysł i bardzo zła droga. Ale zgaduje że się dopiero uczysz więc na razie grunt żeby działało. ;)

0

Dziękuje za wskazówkę. Niekiedy takie błędy robię, że aż mi wstyd. Najprostsze błędy są dla mnie często najtrudniejsze.
Zainteresuje się tym wzorcem, ale ciężko mi teraz powiedzieć, ponieważ uczę się tego języka. Mówiąc wprost, moja wiedza o tym języku jest znikoma i bardziej bazuje na doświadczeniach z C++.
A jest jakieś może zdarzenie, które wyzwoli się podczas dodawania komórek w DataGrindView?
Ponieważ, chcę żeby program sam wyliczał np cena brutto na podstawię stawki i cenny netto.
A być dokładnie, to chcę, żeby się dokładnie wyzwoliło po wpisaniu jakiś wartości do 3 komórek. Dopiero wtedy?
Korzystając z okazji także zapytam, jest jakaś możliwość testowania czy data, którą dostałem jest wartością?

0

CellValueChanged http://msdn.microsoft.com/pl-pl/library/system.windows.forms.datagridview.cellvaluechanged(v=vs.110).aspx odpala się przy zmianach na komórkach w środku tego już musiał byś dodać sprawdzanie.

Drugiego pytania nie rozumiem. Co masz na myśli "czy data jest wartością"?

0

CellValueChanged - zwraca informacje do danej komórki i wierszu czy tylko wiadomość, że coś zostało zmienione w DataGrindView?

Mam tekstboxa i chce sprawdzić czy użytkownik mi podał liczbę czy tekst. Jest coś w tym stylu?

1
  1. W DataGridViewCellEventArgs masz indeks wiersza i kolumny.
  2. int.TryParse(), double.TryParse() itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1