C# - Pytania zadawane przez mnie

Języka C# używam do codziennej pracy i ciągle natrafiam na jakieś problemy. Czasami udaje mi się rozwiązywać je samemu, czasami przeszukuję zasoby WWW i grup dyskusyjnych. Poniżej znajduje się lista pytań na które sam swego czasu szukałem odpowiedzi.

Na tej stronie nie znajdą się pytania i odpowiedzi, które łatwo jest znaleźć gdzieś indziej. Nie zamierzam duplikować innych stron FAQ.


Q1. Jak sprawdzić gdzie zainstalowany jest .NET Framework?
Q2. Jak sprawdzić czy program uruchomiono ze środowiska VS.NET czy jako samodzielną aplikację?
Q3. Jak tworzyć formularze lub kontrolki o dowolnych kształtach?
Q4. Jak zbudować kursor myszy o dowolnej zawartości?

Q1. Jak sprawdzić gdzie zainstalowany jest .NET Framework? A1. Należy skorzystać z następującej sztuczki: string msNETPath; // to wywołanie zwróci "file:///c:/winnt/microsoft.net/framework/v1.0.3705/mscorlib.dll" msNETPath = typeof(object).Assembly.CodeBase; // ...jeszcze trochę pracy... msNETPath = msNETPath.Remove(0, 8); msNETPath = Directory.GetParent(msNETPath).ToString(); Q2. Jak sprawdzić czy program uruchomiono ze środowiska VS.NET czy jako samodzielną aplikację? A2. Wystarczy sprawdzić stan zmiennej Debugger.IsAttached Q3. Jak tworzyć formularze lub kontrolki o dowolnych kształtach? A3. Należy skorzystać z propercji .Region. Na przykład GraphicsPath gP = new GraphicsPath(); gP.AddEllipse ( 0, 0, this.Width, this.Height ); this.Region = new Region ( gP ); Q4. Jak zbudować kursor myszy o dowolnej zawartości? A4. Zaskakująco prosto. // stwórz dowolną bitmapę Bitmap b = new Bitmap( 55, 25 ); Graphics g = Graphics.FromImage ( b ); // namaluj na niej cokolwiek g.DrawString ( "myText", this.Font, Brushes.Blue, 0, 0 ); // a oto trik! IntPtr ptr = b.GetHicon(); Cursor c = new Cursor( ptr ); // przypisz kursor np. formularzowi this.Cursor = c;