DevTrain

Autor: Thomas Hauser

Windows-Steuerelemente in .NET im Eigenbau

Hallo,

nachdem ich immer wieder in Beispielen sehe, dass Steuerelemente jedesmal aufs neue neu formatiert werden, obwohl diese ja in vermutlich allen Forms der Anwendung gleich aussehen sollten, möchte ich an dieser Stelle kurz erläutern, wie man das durch eigene Steuerelemente schöner machen kann.

Zu Beginn möchte ich die Möglichkeiten eines eigenen Steuerelementes aufzählen:

  1. Steuerelement durch Ableitung von einem vorhandenen Steuerelement
  2. UserControl, ein Steuerelement durch Gruppierung mehrerer anderer Steuerelemente erstellen
  3. CustomControl, ein Steuerelement selbst zeichnen mit GDI+

Nun gebe ich für jede dieser Möglichkeiten ein sehr kurzes Beispiel:

  1. Steuerelement durch Ableitung

public class BlueDataGridView: DataGridView

{

public BlueDataGridView()

:base()

{

base.BackgroundColor = Color.Blue;

}

}

 

  1. UserControl

public partial class FolderBrowserTextBox : UserControl

{

public string SelectedPath

{

get { return SelectedPathTextBox.Text; }

set { SelectedPathTextBox.Text = value; }

}

 

public FolderBrowserTextBox()

{

InitializeComponent();

}

 

private void BrowseButton_Click(object sender, EventArgs e)

{

folderBrowserDialog1.SelectedPath = this.SelectedPath;

if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)

{

this.SelectedPath = folderBrowserDialog1.SelectedPath;

}

}

}

 

  1. CustomControl

public class CoolBackgroundControl: Control

{

protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint(e);

 

Rectangle r = new Rectangle(0, 0, this.Width, this.Height);

LinearGradientBrush b = new LinearGradientBrush(

r, Color.Blue, Color.White,

LinearGradientMode.BackwardDiagonal);

e.Graphics.FillRectangle(b, r);

string time = DateTime.Now.ToShortTimeString();

SizeF s = e.Graphics.MeasureString(time, base.Font);

e.Graphics.DrawString(time, base.Font, Brushes.YellowGreen,

new PointF(this.Width / 2 - s.Width / 2,

this.Height / 2 - s.Height / 2));

}

}

 

FAZIT:

Das ist doch richtig cool. Wir können mit dieser Funktionalität nahezu alles erschlagen. Eigene Steuerelemente werden in eine Eigene DLL kompiliert und im GAC zur Verfügung gestellt. Dann können die Steuerelemente auch der Toolbox hinzugefügt werden.

Ist das Steuerelement in derselben Bibliothek (z. B. UserControl, das mehrere eigene Steuerelemente gruppiert), dann sind diese in der Toolbox nach dem Kompilieren sofort verfügbar.


Erfasst am: 01.08.2007 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=1007
© Copyright 2003 ppedv AG - http://www.ppedv.de