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:
- Steuerelement durch Ableitung von einem vorhandenen Steuerelement
- UserControl, ein Steuerelement durch Gruppierung mehrerer anderer Steuerelemente erstellen
- CustomControl, ein Steuerelement selbst zeichnen mit GDI+
Nun gebe ich für jede dieser Möglichkeiten ein sehr kurzes Beispiel:
- Steuerelement durch Ableitung
public
class
BlueDataGridView: DataGridView
{
public BlueDataGridView()
:base()
{
base.BackgroundColor = Color.Blue;
}
}
- 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;
}
}
}
- 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.