Większość aplikacji Windows Forms, kojarzą nam się z prostokątną formą koloru szarego z naniesionymi kontrolkami i tytułowym paskiem. Nie jest to jednak reguła. Nasze aplikacje mogą mieć nieregularny kształt (chmurka, serduszko, etc). Dzięki temu można uzyskać bardzo ciekawie wyglądający program, a odpowiednie skonfigurowanie formy opiera się na kilku prostych krokach. Właśnie to opiszę w dzisiejszym artykule. Całość będę oprogramowywał w C#. Przygotowanie kształtu formu Przygotowanie musimy ...
Posted by mndevnotes W .NET 4 pojawiła się nowa klasa System.Lazy. Opakowuje ona obiekt danego typu, dzięki czemu jego inicjalizacja następuje dopiero w momencie pierwszego użycia.
Jeśli chcemy zapisać plik tym czasowy Możemy dostać komunikat o błędzie "The File exists". Wbrew pozorom nie jest to spowodowane istnieniem pliku o tej samej nazwie...
Microsoft zaprasza Cię do elitarnego grona osób, które wezmą udział w spotkaniu Windows 8 Briefing. Takimi słowami rozpoczyna się wiadomość jaką znalazłem dzisiaj w swojej skrzynce odbiorczej. Microsoft zaprasza developerów na spotkanie, na którym chce zachęcić do tworzenia aplikacji dedykowanych swojej najnowszej platformie – Windows 8.
Ostatnio przyszło mi nieco więcej niż zwykle bawić się zrzutami pamięci różnych procesów, generowanych przez procdumpa, tudzież myszkowo z Process Explorera lub Process Hackera. Czasem po prostu wygodniej jest zrobić zrzut i potem bawić się takim 'zamrożonym procesem' na spokojnie, w innym miejscu i o innym czasie. Szczególnie, gdy bawimy się w analizę jakiegoś ciekawego malware'u (;)) i po prostu maszyna wirtualna nie jest najlepszym miejscem do zabawy debuggerem, a pliki .dmp zarażonych procesów można ...
W ramach zakończenia cyklu poświęconego Managed Add-in Framework (MAF, System.Addin) i aby ułatwić czytanie, przygotowałem spis artykułów związanych z tym tematem. Zapraszam do przeczytania całego cyklu...
W ramach zakończenia serii wpisów związanych Managed Add-in Framework (MAF / System.AddIn) ([1], [2], [3], [4], [5]) chciałbym dodać jeszcze kilka słów w ramach podsumowania. Na plus, czyli "MAF – daję +1" Zacznijmy od pozytywów Managed Add-in Framework (MAF / System.AddIn): Mamy możliwość uruchomienia pluginów w środowisku izolowanym (inna AppDomain, inny proces) (patrz tu i tu) Rozwiązany jest problem z kompatybilnością aplikacja główna (host) – wtyczka (Add-in). Mamy „lifetime management”, c...
Lubie WPF'a. Można o nim powiedzieć, że jest niedorobiony, wolny a technologia ta już nie będzie dalej rozwijana przez MS. Można też zachwycać się nad tym jak bardzo wiele jest klas w WPF i jak wiele jest ich jeszcze nieodkrytych kąsków. Ostatnio natrafiłem na jeden z nich o którym chciałbym dziś napisać: *Bitmap(De/En)coder. Są to klasy, które umożliwiają pracę z różnymi formatami graficznymi np. PngBitmap(De/En)coder, BmpBitmap(De/En)coder, JpegBitnap(De/En)coder, TiffBitmap(De/En)coder. Kiedy...
Witam Ostatnio napotkałem na dość ciekawy wyjątek podczas wykonywania NHibernatowego inserta. W bazie danych mam prostą tabelę Do takiej tabeli został stworzony model namespace Model { public class Appointment { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual DateTime StartDate { get; set; } public virtual TimeSpan Duration { get; set; } } } oraz mapping namespace Model.Mappings { public class AppointmentM...
autor: W ramach kontynuacji serii wpisów związanych Managed Add-in Framework (MAF / System.AddIn) ([1], [2], [3], [4]) chciałbym pokazać przykład pokazujący, w jaki sposób MAF rozwiązuje problem z izolacją ładowanych wtyczek, tak by nie pozwolić na uruchomienie niebezpiecznego kodu. Tak jak pisałem wcześniej jedną z zalet MAF-a jest możliwość uruchamiania wtyczek w środowisku izolowanym, teraz przyjrzymy się w jaki sposób można to zrealizować. Podobne doświadczenie (jednak bez wykorzystania MAF) przep...
Ostatnio pisałem program do rozwiązywania sudoku. Postanowiłem, że cyfry sudoku będę wyświetlał w osobnych TextBox’ach. Nie byłoby w tym nic zastanawiającego, gdyby tych textboxów nie było 81, wyobraźcie sobie ich rysowanie poprzez przeciąganie myszką, już nie mówiąc o problematycznym odczytywaniu z nich danych. Na przykładzie tego prostego programu spróbuję zobrazować jak podejść do rozwiązywania podobnych problemów. Każda kontrolka na formie ma swoją reprezentację w postaci typu, której m...
autor: W ramach kontynuacji serii wpisów związanych Managed Add-in Framework (MAF / System.AddIn) ([1], [2], [3]) chciałbym pokazać przykład pokazujący, w jaki sposób MAF rozwiązuje problem z kompatybilnością wtyczek po zmianie kontraktu. Niniejszy przykład jest pewnego rodzaju kontynuacją przykładu przedstawionego we wpisie pt.: "Przykład prostej aplikacji z obsługą wtyczek z wykorzystaniem Managed Add-in Framework (System.AddIn)", zakłada on sytuację w której istniejący kontrakt ulega zmianie, by umo...
autor: Na początek trochę kodu. Zacznijmy od klasy testowej: public class TestClass : MarshalByRefObject { static TestClass() { Console.WriteLine(String.Format("I'm in the static constructor in the domain '{0}'.", AppDomain.CurrentDomain.FriendlyName)); } public void Hello() { Console.WriteLine(String.Format("Hello from the domain '{0}'.", AppDomain.CurrentDomain.FriendlyName)); } } Teraz kod testujący: AppDomain domain = AppDomain.Cr...
autor: W poprzednim wpisie przybliżyłem czytelnikom teorię związaną z MAF-em (patrz: "[MAF 01] Rzut okiem na Managed Aadd-in Framework (System.AddIn)"), w tym wpisie chciałbym przedstawić prosty przykład aplikacji z obsługą wtyczek z wykorzystaniem Managed Aadd-in Framework (System.AddIn). Niniejszy przykład jest bardzo prostą aplikacją, która odnajduje wtyczki, a następnie z nich korzysta. Wszystkie zagadnienia będą maksymalnie uproszczone, mimo wszystko konieczne jest przygotowanie całego pipeline'u k...
Ostatniego dnia lutego (29.02.2012) została upubliczniona nowa wersja systemu Windows 8 – Consumer Preview, którą można określić mianem bety. Wprowadzono wiele zmian i usprawnień w użytkowaniu nowego produktu. Zmiany nie ominęły również narzędzi dla programistów.Jak zacząć? Tym razem nie znajdziemy specjalnej wersji do pobrania z narzędziami developerskimi. Możemy natomiast bez większych problemów je doinstalować. Narzędzia, SDK...
Witam Ostatnio modyfikując mój kod stanąłem przed problemem rzutowania obiektu typu MembershipUser(z namespaca System.Web.Security) na mój własny typ UserDTO. Klasa UserDTO nie wyróżnia się niczym specjalnym i wygląda następująco public class UserDTO : UserBase { public string Id { get; set; } public string Email { get; set; } public string DisplayName { get; set; } } Podejściem dość oczywistym w takim przypadku jest utworzenie odpowiedniego konstruktora w klasie...
Wielu z Was kojarzy zapewne konstrukcję unsafe do deklarowania stref niezarządzanych w których możemy np. wykorzystywać wskaźniki i inne mechanizmy znane z języków niezarządzanych. Słowo fixed wydaje mi się, że jest nieco mniej popularne. Wiemy, że w środowisku .NET, gdzie zasoby pamięci zarządzane są przez Garbage Collector, obiekty mogą zmieniać swój adres. W poprzednich postach (o GC) pisałem, że przy zwolnieniu obiektów, wszystkie pozostałe są szeregowane jeden po drugim, tak aby uniknąć problemów ...
Kontynuując temat „nieświadomej” lokalizacji aplikacji (porzedni wpis), postanowiłem bliżej przyjrzeć się zaokrągleniom liczb zmiennoprzecinkowych. Okazuje się, że i tu może nas spotkać niespodzianka. W jaki sposób zaokrągla się liczby w C#? Wszystko zależy od potrzeb. Poniżej wybrane sposoby oraz ich rezultaty...
Autor: Zostałem ostatnio zapytany jak można zaimplementować aplikację, bazującej na .NET, która miałaby być rozszerzana za pomocą wtyczek (czasem nazywanych też: Add-In, Add-On, Rozszerzenie, Extension, Plug-In, Snap-In, ...), z których każda uruchamiana by była w bezpiecznym środowisku (np. odrębnej domenie aplikacyjnej). Przyjrzyjmy się więc jakie są możliwości tworzenia rozszzerzeń dla aplikacji (.NET) i jak można przy ich pomocy zapewnić wspomniane bezpieczeństwo. Sposób „wszystko zrobię sam (może ud...
Może nie tylko w Polsce, ale na pewno nie w Stanach Zjednoczonych czy Wielkiej Brytanii. Kiedy decydujemy się na wystawienie naszej aplikacji na rynek międzynarodowy podejmujemy podstawową decyzję: czy nasza aplikacja będzie lokalizowana, czy „sztywno” anglojęzyczna. W drugim przypadku jesteśmy zwolnieni z tłumaczenia tekstów interfejsu oraz wyświetlania danych (takich jak data, czas, waluta) w formacie charakterystycznym dla danego ...