Żeby program był elegancki i działał dobrze (zwłaszcza pod Vista...), powinien swoje pliki konfiguracyjne i inne dane trzymać w katalogu C:\Dokuments and Settings\Login\Application Data..., a nie w podkatalogu Program Files, gdzie leży plik wykonywalny. Jak pobrać ścieżkę do tego katalogu w C#?
Strona głównaUżytkownik
Damian | użytkownik
Kiedy piszemy konsolę w postaci zwykłego systemowego okienka z kontrolką RichEdit, powstaje pytanie, czy podczas dodawania nowego komunikatu przewijać ją na dół. Jeśli nie, to będzie denerwujące dla użytkownika, który chciałby stale widzieć najnowsze komunikaty. Jeśli tak, to będzie denerwujące dla tego, kto chciałby przeczytać konkretny komunikat mimo pojawiania się nowych. Co więc zrobić? Przycisk, który pozwoli zablokować przewijanie konsoli?
C# to piękny język, ale ostatnio natrafiłem na mały problem. Podczas konwersji liczby typu float na łańcuch typu string i odwrotnie, jako symbol dziesiętny domyślnie używany jest polski przecinek zamiast powszechnie przyjętej na świecie kropki. To jest problem, bo co jeśli na przykład tekstowy plik konfiguracyjny dołącozny do programu zawiera liczbę rzeczywistą zapisaną z kropką, a na komputerach użytkowników w zależności od ustawień międzynarodowych funkcja do konwersji będzie szukała przecinka czy jesz...
Należy nadpisać metodę OnPaintBackground() i samodzielnie zaprogramować rysowanie tła. Do rysowania gradientów można posłużyć się klasą LinearGradientBrush, np.: using System.Drawing.Drawing2D; override protected void OnPaintBackground(PaintEventArgs e) { LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, Color.Red, Color.White, 0f); e.Graphics.FillRectangle(brush, ClientRectangle); }
Zabawa zabawą … ale wcześniej czy później powinniśmy wziąć się w garść i zacząć tworzyć nasze programy choć trochę profesjonalniej. Na pewno pomocne dla nas jak i dla osób używających naszego oprogramowania jest odpowiednie numerowanie wersji. Środowisko Microsoft Visual C# Express Edition 2008 (mvc#) nie posiada wbudowanej funkcjonalności pomagającej w prosty sposób kontrolować inkrementacje składowych odpowiadających za wersję oprogramowania.
Pewnie istnieje na to jeszcze kilka sposobów w C#, ale przedstawię najprostszy. Mamy jakiś rozmiar formatki więc wystarczy go skopiować i przypisać do dwóch właściwości obiektu Form:MaximumSizeMinimumSize I już możemy się cieszyć formatką non-resizeable form. Takie coś można zrobić metodą hard-coded czyli wpisać wartości w oknie właściwości w designerze albo np w kons...
Przetrząsając swój dysk w poszukiwaniu zaginionych plików muzycznych, zachciało mi się programu, który to zrobiłby porządek w katalogach układając je wg nazwy artysty i albumu. Nie doszukałem się takiej funkcjonalności w Winampie, a w Googlach nawet nie szukałem. W ramach poświątecznego ruszania mózgiem postanowiłem napisać sobie coś takiego samemu. Wybór padł oczywiście na C#.
Wyszło jak zawsze – przypadkiem. Wśród napisanych blipowych bibliotek znalazła się jedna dla .neta. Niestety, nie jest już rozwijana w związku z czym spróbowałem napisać swoją. Po kilku godzinach surfowania w Sieci udało mi się zdobyć na tyle dużo wiedzy nt. WCF by to właśnie w tej technologi wykonać bibliotekę. I myślę, że udało się, choć nie cała funkcjonalność API Blipa się w niej znajduje.
Jak już się napisało, że kiedyś opiszę się tworzenie klienta RESTa w .Necie, to słowa trzeba dotrzymać. Postaram się jak najzwięźlej opisać w jak dość prosty sposób można otrzymać taką funkcjonalność. Przykładem będzie właśnie API dla Blipa, bowiem to przy nim “wypłynęło” kilka ciekawych zagadnień.
Adapter jest kolejnym z wzorców projektowych, które postanowiłem sukcesywnie omawiać na swoim blogu. Wszystkich zainteresowanych wzorcami projektowymi (dla C#) zapraszam do śledzenia zmian -zapewniam, że będą się tutaj pojawiały kolejno wszystkie znane wzorce projektowe.
Architektura 5505 dni, 12 godzin, 55 minut temu 224 źrodło rozwiń
Chciałem zaprezentować moją klasę ułatwiającą obsługę logowania w .NET, klasa ta napisana jest w c# jak sugeruje tytuł (:
Tworzymy kontrolkę PictureBox (niech się nazywa obrazek). Zanim zaczniemy rysować potrzeba nam kilka zmiennych: private Graphics g; //reprezentuje pole, po którym rysujemy private Pen p; //pióro, rysuje tylko kontury, linie
Napisanie programu do obsługi portu RS-232 za pomocą C# jest bardzo proste. :) Postaram się jednak napisać o tym kilka słów…
Wróciłem po dłuższym czasie do mojego hobbistycznego projektu RubiksCube v2. Zrobiłem ponieważ pojawiła się iskierka nadzieji, że zaliczę na uczelni nim laboratoria z baz danych. Tak więc brakującą częścią do tej pory była cała inteligencja układania kostki. Algorytmy (sekwencje ruchów) już kiedyś postanowiłem przechowywać w pliku XML. Wczoraj dokończyłem projektowanie pliku XML Scheme i.. zacząłem się zastanawiać jak to wykorzystać w projekcie. Rozwiązań było kilka:
Bazy danych i XML 5505 dni, 12 godzin, 55 minut temu 33 źrodło rozwiń
Importowanie plików tekstowych zawierających znaki specjalne, które nie są prawidłowo interpretowane przez sterownik ODBC do obsługi danych tekstowych można przeprowadzić na kilka sposobów. Można na przykład na początek przetworzyć plik zamieniając znaki specjalne jakimś tagiem lub zakodować go odpowiednikiem w postaci szesnastkowej itp. Jest to jakieś rozwiązanie jednak wymaga wykonania dodatkowych operacji na plikach. Istnieje inne rozwiązanie tego problemu – nieco wolniejsze niż bezpośrednie korzystan...
Bazy danych i XML 5505 dni, 12 godzin, 55 minut temu 97 źrodło rozwiń
Windows Vista udziwnił troszeczkę konstrukcję okna wprowadzając półprzezroczystą część nazywaną Glass (szkło). Jest to ewidentnie wodotrysk i trochę dziwi mnie, dlaczego wprowadzono do API funkcje, które mogą okazać się tylko chwilową modą, która zniknie wraz z nastepną wersją systemu. No dobrze, w Windows 7 dalej będzie ten wodotrysk, więc skoro już jest, to warto może spróbować go użyć (byle nie nadużyć). Nie oszukujmy się – ludzie lubią wodotryski. WPF nie daje bezpośredniej możliwości operowania na s...
Przypuśćmy że mamy zdarzenie public event EventHandler
Operacje na datach to pewnie chleb powszedni dla każdego programisty. Wstawianie ich do bazy danych, to kolejna, seryjna nasza czynność. W zasadzie bardziej chodzi mi o umieszczanie domyślnych wartości daty w tabelach bazy danych MS SQL Server. W sumie niebyłoby nic odkrywczego, gdyby nie fakt, że wyjątki w takim kodzie pojawiają się w najmniej oczekiwanych momentach :-) Istnieje spora różnica między wartościami: DateTime.MinValue, który w rezultacie da: 01-01-0001, a SqlDateTime.MinValue, który zwróci: ...
Bazy danych i XML 5505 dni, 10 godzin, 42 minuty temu 48 źrodło rozwiń
Jest kilka sposobów na odczytywanie dokumentów tekstowych i wyszukiwanie w nich określonych treści. Często najbardziej niezawodne jest użycie do tego celu wyrażeń regularnych, czyli inaczej mówiąc regexa.
Gdzie Visual Studio przechowuje informacje o ostatnio używanych projektach (MRU List)? Odpowiedź jest prosta: w rejestrze systemu Windows. Dokładniej jest to: HKEYCURRENTUSER\Software\Microsoft\VisualStudio\9.0\ProjectMRUList