Często zależy nam by pewien obiekt przechowywał w sobie wartości tylko z określonego zbioru. W takiej sytuacji z pomocą przyjdzie nam typ wyliczeniowy.
Klasy są chyba najbardziej skomplikowanym działem języka C#, a z pewnością najbardziej rozbudowanym. Każda osoba starająca nauczyć się języka będzie musiała się z nimi zapoznać. Klasy w C#, tak jak w większości języków obiektowych, są schematami na podstawie których budowane są obiekty… …I to by było na tyle jeśli chodzi o teorię, czas na trochę kodu!
Z biegiem lat, mam nieodparte wrażenie, że doba staje się coraz bardziej krótsza. Brakuje mi czasu na wiele różnych rzeczy. Obojętnie czy jest to pisanie kodu, czytanie książek, czy też nauka. Problem ten dotyczy również bloga, dlatego też spróbuję rozwiązać go w pewien sposób, wprowadzając nowy rodzaj tekstów oznaczonych tagiem Szybkie porady. Głównym zadaniem wpisów oznaczonych takim znacznikiem, będzie rozwiązanie pewnych, jasno określonych problemów. Teksty tego typu mogą pojawić się właściwie w każd...
Architektura 4646 dni, 11 godzin, 5 minut temu 165 źrodło rozwiń
W każdej aplikacji, wykorzystujacej bazę danych do przechowywania informacji, są elementy/tabele/struktury, których zawartość zmienia się niezmiernie rzadko. W związku z tym, zasadne wydaje się zaimplementowanie mechanizmu przechowywania tychże informacji w “bardziej stałym” obiekcie. Ograniczyło by to komunikację pomiędzy bazą danych i aplikacją, a tym samym zwiększyło wydajność aplikacji. Mechanizm taki można zaimplementować na wiele sposobów. Jednym z nich może być klasa typu Manager do przechowywania...
Tworząc aplikację, która operuje na jakichkolwiek danych, które mają być dostępne również w przyszłości, szybko dochodzimy do momentu, kiedy to musimy wybrać odpowiedni sposób składowania tych danych. Po szybkim namyśle, przyjdzie Wam z pewnością kilka propozycji: Tekstowy plik danych o określonej strukturze Plik XML (można korzystać z serializacji) Baza danych Każde z tych rozwiązań ma swoje określone wady i zalety, a wszystko zależy również od skali projektu. W moim przypadku miałem właśnie do czy...
Bazy danych i XML 4652 dni, 15 godzin, 39 minut temu 349 źrodło rozwiń
Na pierwszy rzut oka może się wydawać, że Silverlight nie pozwala na „przechwytywanie” i obsługę wciskania wielu klawiszy jednocześnie np: CTRL + C, ALT + X itd. Ale to tylko pierwsze wrażenie. Poniżej opiszę jak radzić sobie z tym problemem.
Silverlight 4662 dni, 9 godzin, 42 minuty temu 101 źrodło rozwiń
Używając kontrolki WebBrowser na telefonie Windows Phone mogliście się spotkać z błędnym kodowaniem znaków w trakcie używania metody NavigateToString. Podczas standardowego nawigowania przy użyciu metody Navigate do pliku lokalnego albo zewnętrznego wszystko działa poprawnie. Natomiast użycie metody NavigateToString powoduje dziwną interpretację znaków:
Mobile development 4731 dni, 20 godzin, 21 minut temu 49 źrodło rozwiń
Interfejs INotifyPropertyChangedPropertyChanged znany jest prawdopodobnie każdemu programiście C#. Interfejs ten zawiera jedynie jedno zdarzenie public event PropertyChangedEventHandler PropertyChanged; które powinniśmy odpalić w momencie gdy dana właściwość zostanie przez nas zmieniona. Dzięki temu dowolny obiekt, który będzie nasłuchiwał zmian danej właściwości zostanie o tym poinformowany. Przykładowa klasa implementująca ten interfejs może wyglądać w następujący sposób: public class ViewMode...
Tak jak wspomniałem w poprzednim wpisie, tym razem zajmiemy się tworzeniem własnej klasy implantującej interfejs ICommand . 1. Implementacja interfejsu ICommand - WPF Klasa implementująca ICommand może wyglądać w następujący sposób public class DelegateCommand : ICommand { private Action
Wstęp Każdy programista, który napisał chociaż parę linijek kody w WinFormsach wie, że kontrolki używają eventów do powiadamiania o zmianach swojego stanu. W przypadku, gdy interesuje nas odpowiednia reakcja na zdarzenie, podpinamy się do niego odpowiednią funkcją i wykonujemy założone przez nas operację. W analogiczny sposób można postępować w WPF-ie oraz w Silverlighcie, jednakże podejście takie niejako mija się z modelem MVVM. Posiadanie event handlerów w kodzie, ściśle wiąże nam widok (XAML) z code ...
Style jest to mechanizm wprowadzony w WPF-ie, a następnie w Silverlighcie, dzięki któremu w łatwy sposób można ujednolicić wygląd elementów naszej aplikacji. Style z reguły definiowane są w zasobach. Mogą to być zarówno zasoby całej aplikacji, danego okna lub nawet wybranej kontrolki. Przykładowy styl może wyglądać w następujący sposób: Każdy styl jest rozpoznawany dzięki unikalnemu kluczowi - parametr x:Key. Możliwe jest pominięcie klucza, w przypadku gdy ustawiona zostanie właściwść TargetType. ...
Trigery jest to mechmizm WPF-a służący reakcji UI na jakieś zdarzenie. Wyróżniamy cztery rodzaje triggerów Property triggers - używane do zareagowanie na zmiany dependency property w danej kontrolce, Data triggers - używane do zareagowanie na zmiany w bindowanych obiektach- można podłączyć się do właściwości z DataContextu jak i z danej kontrolki, MultiDataTriggers - używane do reagowania na zmiany kilku właściwości, MultiTrigger - używane do reagowania na zmiany kilku dependecy property w danej ...
Walidacja jest to technika sprawdzająca, czy dany obiekt spełnia pewne założenia poprawności danych. W WPF-ie oraz Silverlighcie istnieją trzy sposoby walidacji obiektów: walidacja poprzez rzucanie wyjątków, walidacja z użyciem interfejsu IDataErrorInfo, walidacja z użyciem interfejsu INotifyDataErrorInfo Walidacja poprzez rzucanie wyjątków Walidacja poprzez rzucanie wyjątków odbywa się w następujący sposób. W seterze danej właściwości dodajemy warunek sprawdzający czy wpisane dane są poprawne...
ListViewCollection (WPF) ListViewCollection jest to kolekcja wprowadzona do WPF-a, która wspiera sortowanie, grupowanie oraz filtrowanie. Kolekcję taką tworzymy w następujący sposób List
Biblioteka Microsoft UI Automation ujrzała światło dzienne wraz z premierą .NET 3.0 - jednakże pozostała ona w cieniu swoich większych braci WPF oraz WPF, które również zostały wprowadzone do Frameworka 3.0. Microsoft UI automation zapewnia nam dostęp do wszystkich elementów drzewa wizualnego aplikacji. Dzięki czemu mamy możliwość: Znajdowania wybranych przez nas kontrolek Interakcji z kontrolkami - wpisywanie tekstów do TextBox-ów, klikanie w przyciski itp Wczytywania wartości już wprowadzonych ...
Poszukując sposobów automatycznego testowania aplikacji natrafiłem na ciekawą funkcjonalność Visual Studio 2010 Ultimate. Mianowicie w tej wersji naszego ulubionego IDE znalazło się miejsce na nowy typ testów - Coded UI Test. Coded UI Test jest to automatyczny test UI, który tworzymy poprzez nagrywanie akcji jakie wykonujemy w naszej aplikacji. Nie musimy pisać ani jednej linijki kodu żeby przetestować jakąś funkcjonalność naszego programu. Jedyne co musimy zrobić jest to przejście przez wszystkie niezbę...
Z serii: artykuły dla zielonych, może komuś pomoże zrozumieć czym są interfejsy w technologii .NET
Przy okazji przygotowywania bazy słów kluczowych pod nasz portal napisałem proste narzędzie, które potrafi zautomatyzować część tego żmudnego procesu. Narzędzie tworzy listę podpowiedzi z wyszukiwarki Google na dane słowo kluczowe, doklejając po kolei litery alfabetu i odpytując Google Suggestion API.
Za każdym razem, kiedy kończymy tworzenie jakiejś nowej aplikacji, bądź też wypuszczamy aktualizację dla programu dobrze znanego na rynku, zachodzi konieczność utworzenia, bądź też zaktualizowania instalatora dla tejże aplikacji. Oczywiście możemy pliki wykonywalne aplikacji wraz z zasobami dostarczyć naszym użytkownikom np. w postaci skompresowanego archiwum, jednak często jest to rozwiązanie nie do końca elastyczne i wygodne - wymaga choćby użycia dodatkowej aplikacji obsługującej kompresję plików. Dl...
Na wstępie chciałbym przeprosić, że to tak długo trwało , ale ciężkie życie programisty nie zawsze pozwala mi znaleźć czas na częste blogowanie.W tej części mojego tutoriala zajmiemy się samą konfiguracją usługi log4net. Zasadniczo istnieją dwa możliwe podejścia do konfiguracji. Można stworzyć osobny plik konfiguracyjny i nazwać go np. log4net.config lub dodać sekcję do głównego pliku konfiguracyjnego aplikacji. Pierwszym przypadku należy samodzielnie odczytać plik za pomocą api konfiguracyjnego platform...