Blue Orange Green Pink Purple

Posts Tagged ‘WinForms’

You can use the search form below to go through the content and find a specific post or page:

Feb 24

HowTo: Custom Cursor für Windows Forms

Heute wieder ein kurzer Eintrag: Letztens wollte ich in einer WinForms Anwendung bei gewissen Aktionen Cursor verändern. .NET liefert zwar ein paar Curors-Typen (System.Windows.Forms.Cursors) mit, die befriedigen bei sehr individuell angepassten und oft auch selbstgerenderten WinForms Anwendungen nicht ganz. Daher will ich heute kurz beschreiben, wie man seinen eigenen Cursor aus einem lokalen File bzw. Resource lädt und verwendet.

Was benötigen wir?
Das einzige, was wir brauchen ist eine einfache *.ico Datei, die wir später als Cursor darstellen wollen. Am besten erstellt man sich so ein File mit einem Bildverarbeitungsprogramm seines Vertrauens. Hat man dass, können wir bereits mit Visual Studio weitermachen. Wir erstellen uns ein WinForms Projekt und fügen das zuvor erstellte *.ico File zum Projekt hinzu und hängen es in die Resources des Projekts.

Jetzt können wir über den Properties-Namespace des Projekts auf die Resources zugreifen und sollten dort über Intellisense unsere soeben hinzugefügte Grafik finden. Die ist vom Type Icon — die wiederrum eine Property names “Handle” verfügt. Genau diesen IntPtr übergeben wir dem Konstruktor der Cursor-Klasse und weisen diese Cursor-Instanz auf den aktuellen Cursor der Anwendung zu. Fertig.

Cursor.Current = new Cursor(Properties.Resources.Cursor_Wait.Handle);

Aussehen tut das Ganze dann so:

Custom Cursor

Demoprojekt gibts wie immer hier zu finden: http://downloads.juergenoberngruber.at/blog/CustomCursor.zip

In diesem Sinne.

Jan 30

HowTo: Custom ToolStrip Rendering für Windows Forms

Heute möcht ich mal kurz und bündig erklären, wie man es ohne allzugroßen Aufwand schafft, ein Windows Forms ToolStrip-Control so zu customizen, das es dem Layout und Design der eigenen Anwendungen entspricht. Will man ein ToolStrip-Control an die eigenen Bedürfnisse anpassen, hat man grundsätzlich 2 Möglichkeiten. Beide Varianten haben gemeinsam, dass man zuerst ein CustomControl erstellt und dies von System.Windows.Forms.ToolStrip ableitet:


public partial class CustomToolStrip : System.Windows.Forms.ToolStrip
{
   public CustomToolStrip()
   {
      InitializeComponent();
   }
}

Nachdem wir das Control haben, möchten wir es anpassen. Jetzt können wir einerseits in der OnPaint() Methode das gesamte Control selbst neu rendern. Das führt dazu, dass wir alles neu und selbst zeichnen müssen (also alle Buttons, Items, Rahmen, Hintergrund, etc.) und die notwendige Funktionalität (Click, Hover, etc. – Events) implementieren. Das bedeutet natürlich einen ehrheblichen Aufwand. Daher verwenden wir eine bereits im .NET Framework mitgelieferte Klasse names System.Windows.Forms.ToolStripRenderer.

System.Windows.Forms.ToolStripRenderer
Leitet man eine Klasse von dieser Basisklasse ab, hat man zahlreiche Möglichkeiten, in den Renderprozess des ToolStrip-Controls einzugreifen (genaueres findet man hiert http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstriprenderer.aspx). Implementieren wir die Klasse, können wir zB in den Renderprozess des Rahmens eingreifen:


public class CustomToolStripRenderer : System.Windows.Forms.ToolStripRenderer
{
   protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
   {
      e.Graphics.DrawLine(new System.Drawing.Pen(Color.Red),
                          0, e.AffectedBounds.Height - 1,
                          e.AffectedBounds.Width, e.AffectedBounds.Height - 1);
   }
}

Damit wir den Renderer auch anwenden, reicht es, in dem CustomToolStrip Control die Property Renderer auf einen neue Instanz des ToolStripRenderers zu setzen:


this.Renderer = new CustomToolStripRenderer();

In diesem Sinne. Beispielcode gitbs wie immer hier.

  • Recent Posts
    • HowTo: Eigene Regeln für Microsoft StyleCop erstellen
    • HowTo: Microsoft StyleCop Integration mit Visual Studio und MSBuild
    • HowTo: Eigene Templates für Visual Studio 2008 erstellen, Teil 2
    • HowTo: Eigene Templates für Visual Studio 2008 erstellen, Teil 1
    • Performance des Cassini Webservers in Kombination mit Firefox
  • Archives
    • June 2010 (2)
    • May 2010 (3)
    • March 2010 (3)
    • February 2010 (4)
    • January 2010 (3)
    • December 2009 (1)
    • November 2009 (9)
  • Tags
    .net AOP ASP.NET ASP.NET MVC blend Bootmanager C# ci Codequality Configuration Continuous Integration css Cursor DateTime DDD Deployment dynamisch emit Exrpession Extensibility Fluent HowTo Microsoft MVVM Pattern PostSharp Reflection Repository ruby silverlight Software Design StyleCop System teamcity Templates VHD Virtual Images Visual Studio Vorlagen web Windows 7 Windows Mobile WinForms WPF XAML
  • About

    Jürgen Oberngruber is a project manager and software architect living in Wels, Austria and currently working at ecomplexx Austria, Wels. During his study at the University of Applied Sciences in Hagenberg, Austria he gained a deep knowledge in the field of software engineering using a lot of different programming languages. Since a few years he's focusing on the Microsofts .NET platform including all relevant technologies. One of his passion is to explore, to test and to evaluate new technologies and programming languages (mostly in the field of Microsofts .NET platform). Checkout more information on www.juergenoberngruber.at

  • Meta
    • Log in
    • Entries RSS
    • Comments RSS
    • WordPress.org
  • Archives
    • June 2010
    • May 2010
    • March 2010
    • February 2010
    • January 2010
    • December 2009
    • November 2009
  • Search






  • Home

© Copyright Jürgen Oberngruber's Blog. All rights reserved.
Designed by FTL WordPress Themes brought to you by DT Web Template

Back to Top