Automatyczne generowanie formatek dla encji
Chciałem się podzielić z Wami tym, czego się wczoraj dowiedziałem od
mojego kolegi Marcina N. :) Rzecz będzie o generowaniu... interfejsu
użytkownika. Marcin pokazał mi sztuczkę, dzięki której w minutę mogę
wygenerować formatkę prezentującą dane z dowolnej encji. Poniżej
znajduje się
picture-cast (:P) prezentujący proces generowania.
W projekcie mam zdefiniowane dwie encje:
public class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
private Address _address;
public Address Address
{
get { return _address; }
set { _address = value; }
}
}
public class Address
{
private string _street;
public string Street
{
get { return _street; }
set { _street = value; }
}
private int _number;
public int Number
{
get { return _number; }
set { _number = value; }
}
private string _zipCode;
public string ZipCode
{
get { return _zipCode; }
set { _zipCode = value; }
}
}A teraz cała sztuczka:
Kompilujemy projekt. Następnie z menu wybieramy
Data -> Add New Data Source....

Uruchamia się kreator. Jako
Data Source Type wybieramy
Object, ponieważ naszym źródłem danych będzie klasa
Person.

W kolejnym kroku wskazujemy klasę
Person.

Z menu wybieramy
Data -> Show Data Sources.

Okno z lewej prezentuje nam wybraną klasę
Person.
Za pomocą tego widoku możemy dostosować sposób, w jaki zostanie
wygenerowana formatka. Dla każdej encji możemy wybrać czy ma zostać
wygenerowana lista tych encji (wtedy zostanie wygenerowany
DataGridView), albo szczegóły.

Dla szczegółów zostaną wygenerowane poszczególne kontrolki (tak jak określono).

Teraz łapiemy encję
Person i
przeciągamy ją na formatkę. VS wygeneruje nam odpowiednie kontrolki.
Dla każdego pola detali otrzymujemy etykietę z odpowiednim napisem oraz
wybraną (na drzewku) kontrolką.

Co więcej kontrolka ta jest zbindowana do wygenerowanego
BindingSource. To wszystko jednym pociągnięciem myszki :)

Jeżeli
już o tym wiedzieliście to sobie przypomnieliście :P A tym, którzy,
podobnie jak ja, dopiero teraz się o tym dowiedzieli, mam nadzieję, że
ta sztuczka się przyda.
A na koniec screen-cast:
http://www.nuwanda.ovh.org/res/nblog_viewgen_video.wmv