Dienstag, 12. August 2008

Highlight Focused Textbox

Hier ein kleiner einstieg in Custom Forms für Microsoft .NET und dem Microsoft Visual Studio!

Was ist unser ziel?
Unser Ziel ist es, eine Textbox zu erstellen die wenn sie den focus auf sich hat eingefärbt wird und somit dem User eine kleine Orientierungshilfe bietet. Dazu werden wir einfach die schon vorhandene Standard Textbox von Microsoft Visual Studio etwas modifizieren.


Was wird benutzt?
Ich verwende Microsoft Visual Studio 2005 und schreibe dieses Beispiel in Microsoft VB.net


Wie gehen wir vor?
Schritt 1:
Wir erstellen uns ein Neues Projekt für eine Klassenbibliothek (*.dll) und Nennen das Projekt: customForms

Schritt 2:
Nun fügen wir unserem Projekt eine Neue Klasse hinzu und nennen diese: FocusedTextBox

Schritt 3:
Kopiert nun folgendes in die Datei:
Imports System.Drawing
Public Class FocusedTextBox
Inherits TextBox
End Class

Schritt 4:
Fügt nun folgende Variablen in euren Programmcode ein:
Imports System.Drawing
Public Class FocusedTextBox
Inherits TextBox

Private myFocusColor As Color ' Einfärbfarbe
Private myOriginalBackcolor As Color ' Ursprüngliche Farbe
Private myOnFocusColor As Boolean ' Flag für Fokusierung

End Class

Schritt 5:
Anlegen einer neuen Instanz dieser Klasse:
Sub New()

'Den Basiskonstruktor aufrufen!
MyBase.New()
'Text = "FocusedTextBox"
'Standart Text setzen
BackColor = System.Drawing.Color.Gainsboro
BorderStyle = System.Windows.Forms.BorderStyle.None
Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Size = New System.Drawing.Size(100, 16)
'Voreingestellter Wert ist Moccasin
myFocusColor = System.Drawing.Color.Moccasin
'Voreingestellt ist: Bei Fokus wird eingefärbt.
myOnFocusColor = True

End Sub


Schritt 6:
Wir benötigen zum weiter machen noch folgende 2 Methoden in unserer Klasse:
Public Property FocusColor() As Color
Get
Return myFocusColor
End Get
Set(ByVal value As Color)
myFocusColor = value
End Set
End Property
und
Public Property OnFocusColor() As Boolean
Get
Return myOnFocusColor
End Get
Set(ByVal value As Boolean)
myOnFocusColor = value
End Set
End Property


Schritt 7:
Jetzt kommen wir dazu die Event behandlungen zu überschreiben:
Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs)
MyBase.OnGotFocus(e)
If OnFocusColor Then
myOriginalBackcolor = Me.BackColor
Me.BackColor = FocusColor
End If
End Sub
und
Protected Overrides Sub OnLostFocus(ByVal e As System.EventArgs)
MyBase.OnLostFocus(e)
If OnFocusColor Then
Me.BackColor = myOriginalBackcolor
End If
End Sub

(Erklärungen zu den einzelnen Methoden werden später hinzugefügt)


Soweit sogut, nun haben wir uns eine eigene Dynamic Link Library (DLL) geschrieben. Doch was machen wir damit?

Zuersteinmall ertellen wir unsere Dynamic Link Library (DLL) über den übligen weg ;)
Wir kopieren unsere customForms.dll aus unserem /bin ordner und stecken sie in das Verzeichnis des Projektes in dem wir unsere neue Form verwenden möchten.

Jetzt öffnen wir das Projekt in dem wir die Forms verwenden möchten und gehen auf:
Extras -> Toolboxelemente auswählen

Dort wählen wir dann unsere dll (durchsuchen klicken) aus und laden sie in die Toolbox.

Fertig! Nun könnt ihr eure Textbox verwenden :) Viel spaß!
Wenn es Fragen oder Probleme gibt einfach in die Komments schreiben!

2 Kommentare:

Anonym hat gesagt…

Standard nicht Standart

Anonym hat gesagt…

"Zuersteinmall _ertellen_ wir unsere Dynamic Link Library (DLL) über den übligen weg ;)"