Artykuły dla tagu .Net

lut 22 2012
0

Odtwarzanie plików MP3 w C#

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żdej kategorii i będą w sposób zwięzły rozwiązywać określony problem (mogą to być również Wasze problemy, o które spytacie np. drogą mailową.

Wpisy tej kategorii cechować się będą z pewnością odrobinę mniejszą objętością. Nie ma się co oszukiwać, że średnia ilość tekstu, która przypada na jeden wpis, jest na Alt Control Delete raczej duża - w kontraście choćby do średniej na innych blogach.

Zmniejszając objetość określonych wpisów, postaram się za to poszerzyć zakres tematów i jednocześnie nie obniżyć jakości samego bloga. Mam nadzieję, że nowy cykl wpisów przypadnie Wam do gustu;) Uprzedzając pytanie - wpisy normalnej objętości dalej będą się pojawiać.

To tyle tytułem wstępu, czas przejść do meritum, czyli w dniu dziejszym będą to zagadnienia związane z odtwarzaniem plików MP3 w C#. Przedstawię i pokrótce opiszę dwa sposoby realizacji tego celu.

gru 31 2011
0

Implementacja BackgroundWorker w WPF

Czy kiedykolwiek zdarzyło się Wam spotkać z aplikacją, która podczas przetwarzania jakiś bardziej złożonych i czasochłonnych operacji, zamrażała swoje okno w sposób, który skutecznie blokował Waszą pracę?

Czy nie zdarzało się Wam również w takich sytuacjach ujrzeć pełny optymizmu napis Brak odpowiedzi?

Podejrzewam że każdy z Was, przynajmniej raz spotkał się z taką sytuacją. Być może część z Was przeklinała system operacyjny, choć w istocie to nie była do końca jego zasługa. Bardziej winny w takiej sytuacji był niestety programista, który z niewiedzy/braku czasu/cwaniactwa (niepotrzebne skreślić) nie zaimplementował wielowątkowości w swojej aplikacji.

Być może wielu programistów, boi się po prostu tego zagadnienia, choć w gruncie rzeczy jest ono całkiem proste w implementacji. W przypadku gdy korzystamy z aplikacji napisanych w WPF/Silverlight i chcemy skorzystać z dodatkowego wątku, który nie będzie blokować naszego interfejsu UI, to w takim celu, świetnie sprawdzi się tytułowy BackgroundWorker.

gru 27 2011
0

Multime 1.1 - dodanie masek filtrujących

Od ostatniej aktualizacji Multime minęło już trochę czasu, ale sam projekt nie upadł:) Dziś mam przyjemność ogłosić wypuszczenie wersji 1.1, w której główną zmianą, jest wprowadzenie masek plików i folderów. Oprócz tego, pojawiło się również kilka mniejszych poprawek, w tym jedna związana z błędem, który mógł wystąpić podczas zmiany nazwy folderów.

Jeśli chcecie się dowiedzieć więcej, na temat tego co oferuje sama aplikacja i jakie jest jej przeznaczenie, zapraszam tutaj.

lis 06 2011
0

Tworzenie własnego projektu instalatora w Visual Studio

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.

Dlatego też warto posiąść wiedzę o tym i jak tworzyć własny instalator. Przy użyciu Visual Studio i projektu Setup Wizard jest to stosunkowo proste zadanie.

paź 14 2011
0

WPF Tutorial - aplikacje wielojęzyczne

Jakiś czas temu, we wpisie Tworzenie aplikacji wielojęzycznych z C# i ASP.NET w Visual Studio opisywałem jak stworzyć aplikację, która będzie przystosowana do obsługi wielu języków i wykorzystywać będzie do realizacji tego celu mechanizm zasobów udostępniony w platformie .Net.

Wpis ten, nie opisywał jednak zastosowanie tego mechanizmu, dla aplikacji napisanych pod kątem frameworka WPF, który korzysta z języka XAML. Dlatego też dziś, w ramach kolejnego wpisu z cyklu WPF Tutorial, chciałbym nadrobić braki w tamtym opisie.

wrz 10 2011
0

WPF Tutorial - zasoby i style

W poprzedniej części tutoriala, poświęconej tworzeniu własnych kontrolek użytkownika, wspomniałem co nieco o zasobach i stylach, które możemy umieścić w pliku dodatkowym, bądź też w aktualnie przetwarzanym dokumencie. Dziś chciałbym rozszerzyć trochę temat i pokazać bardziej praktyczne wykorzystanie zasobów. Dowiecie się między innymi o tym jak:

  • Utworzyć zasoby lokalne dla wybranego okna/elementu
  • Utworzyć zasoby globalne dla całej aplikacji
  • Jak tworzyć powtarzalne elementy jako zasoby (np. menu kontekstowe) i wykorzystać je w praktyce
sie 21 2011
0

Multime - aplikacja do masowej zmiany nazwy plików i katalogów

Kiedy na przestrzeni kilku ostatnich miesięcy, tworzyłem kolejne wpisy o tematyce WPF, to w międzyczasie powstawała również tytułowa aplikacja Multime, która pozwala na masową zmianę nazw plików. Już od dłuższego czasu, poszukiwałem narzędzia, która pozwoli mi na komfortową zmianę nazwy plików, dokładnie w taki sposób jakiego oczekuję.

Dotychczas korzystałem z dodatku zawartego w Total Commanderze, który niestety posiadał dla mnie jedną znaczącą wadę: nie umożliwiał rekursywnej zmiany nazwy plików i katalogów. Dlatego też postanowiłem stworzyć własne narzędzie (co nieco wzorując się na TC), które dostarczy poszukiwanych przeze mnie funkcjonalności. Dziś mam przyjemność przedstawić aplikację Multime w wersji 0.7.3 , która z dniem dzisiejszym przeszła do fazy otwartej bety (przed instalacją przeczytaj koniecznie uwagi na końcu wpisu).

lip 31 2011
0

Tworzenie własnych atrybutów w C#

Wykorzystywanie atrybutów w C#, jest często marginalizowane, a nawet wręcz pomijane przez programistów tego języka. Jak pokazuje życie, mogą one być całkiem przydatne np. w serializacji obiektów do XMLa. Mogą one się przydać, również w naszych własnych programach. Użycie atrybutów, może spowodować, że napisany przez nas kod będzie bardziej elastyczny i skalowalny, a chyba to się liczy, prawda;)?

W dzisiejszym wpisie, chciałbym zatem Wam pokazać, jak w banalny sposób można utworzyć własną klasę atrybutu i jak wykorzystać ją w praktyce.

lip 10 2011
0

WPF Tutorial - tworzenie kontrolek użytkownika

Jeden z czynników, który warunkuje dobrego programistę, to umiejętność tworzenia elastycznego i niepowtarzalnego kodu. Jeśli jakiś element naszego kodu jest powtarzalny, bądź schematyczny, to z pewnością warto się zastanowić nad napisaniem metody, która zawrze ten kod i będzie mogła być wykorzystana wielokrotnie. Napisana przez nas aplikacja stanie się bardziej przejrzysta i z pewnością zmaleje również ryzyko popełnienia błędu, a wszelkie zmiany będzie można wykonać w jednym miejscu.

Podobnie sprawa wygląda z GUI. Wielokrotnie tworząc złożone interfejsy użytkownika, tworzymy określoną, powtarzalna kombinację kontrolek, bądź też kontrolkę o specjalnych właściwościach, którą również wykorzystujemy wielokrotnie. Zbrodnią byłoby by w tym przypadku, powtarzać ten sam kod wielokrotnie. Nie chodzi już tu w tym przypadku tylko o zmysł gustu i dobrego smaku w programowaniu, ale o przyszłą elastyczność, bo GUI bywa szczególnie zmienne, a zmiana w jednym miejscu jest stokroć tańsza, aniżeli zmiana w niezliczonej liczbie miejsc w całej aplikacji. Jaki morał, z tego wyjątkowo długiego wstępu? A no taki, że warto zainteresować się tworzeniem własnych kontrolek, czyli w WPFie tzw. kontrolek użytkownika (z ang. UserControl).

cze 26 2011
0

WPF Tutorial - bindowanie

Od ostatniej części tutoriala WPF, poświęconej tworzeniu prostego kalkulatora minęło już kilka tygodni, więc czas najwyższy na nową część. Dziś zajmiemy się zagadnieniem niezwykle ważnym z punktu widzenia wykorzystania własnych danych w połączeniu z interfejsem graficznym. Mowa oczywiście o bindowaniu, czyli wiązaniu danych wyświetlanych w kontrolkach, a pochodzących np. z naszych własnych obiektów, właściwości, bazy danych etc.