Tipp-Upload: VB.NET 0365: Inputbox
von pks
Über den Tipp
Dieser Tippvorschlag ist noch unbewertet.
Der Vorschlag ist in den folgenden Kategorien zu finden:
- Fenster
Dem Tippvorschlag wurden folgende Schlüsselwörter zugeordnet:
Inputbox, Form, Fenster, Textbox
Der Vorschlag wurde erstellt am: 29.04.2009 14:20.
Die letzte Aktualisierung erfolgte am 29.04.2009 16:43.
Beschreibung
eine Inputbox im Eigenbau
Schwierigkeitsgrad |
Verwendete API-Aufrufe: |
Download: |
' Dieser Source stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' ' Beachten Sie, das vom Designer generierter Code hier ausgeblendet wird. ' In den Zip-Dateien ist er jedoch zu finden. ' --------- Anfang Projektdatei InputBoxTest.vbproj --------- ' ------------------ Anfang Datei Form1.vb ------------------ Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Using Frm As New InputBox("Passwort", "Geheim", , , , , 1) ' weitere Optionen Frm.ToolTipText = "hier ist der ToolTip" ' Frm.Text = "Passwort" ' Frm.TextInput = "Geheim" ' Frm.PasswordChar = "#"c ' Frm.NumericOnly = True ' Frm.LocationStart = New Point(30, 30) ' Frm.OnEnterOk = False ' Frm.OnEscapeCancel = False ' Frm.MaxLines = 5 ' Frm.MaxLength = 10 Frm.ShowDialog(Me) If Not Frm.Canceled Then MessageBox.Show(Frm.TextInput) Else MessageBox.Show("Abbruch") End If End Using End Sub End Class ' ------------------- Ende Datei Form1.vb ------------------- ' ----------------- Anfang Datei InputBox.vb ----------------- ' ---------------------------------- ' InputBox VB2005 ' analog VB6 ' ' Autor peter.k.sauer@web.de ' created 28.04.2009 ' update 29.04.2009 ' ---------------------------------- ''' <summary> ''' eine Box für Texteingabe ''' </summary> ''' <remarks></remarks> Public Class InputBox Inherits Form Private WithEvents TBox As New TextBox Private Lbl As New Label Private TT As New ToolTip Private WithEvents btnOk As New Button Private WithEvents btnCancel As New Button Private m_Canceled As Boolean = True Private m_SaveOnEnter As Boolean = True Private m_OnEscapeCancel As Boolean = True Private m_NumericOnly As Boolean = False Private m_ToolTipText As String Private m_LocationStart As Point = New Point(-1, -1) Private m_MaxLines As Integer = 1 ''' <summary> ''' maximal Zeilen in der Textbox, default 1 ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property MaxLines() As Integer Get Return m_MaxLines End Get Set(ByVal value As Integer) m_MaxLines = value If m_MaxLines = 1 Then TBox.Multiline = False Me.Height = 100 btnOk.Top = 40 btnCancel.Top = 40 Else TBox.Multiline = True Dim zh As Single = Windows.Forms.TextRenderer.MeasureText("x", TBox.Font).Height zh = zh * Convert.ToSingle(MaxLines - 1) Dim H As Integer = Convert.ToInt32(zh) TBox.Multiline = True TBox.Height += H Me.Height += H btnOk.Top += H btnCancel.Top += H End If End Set End Property ''' <summary> ''' maximal Anzahl Zeichen in der Textbox, default 32767 ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property MaxLength() As Integer Get Return TBox.MaxLength End Get Set(ByVal value As Integer) TBox.MaxLength = value End Set End Property ''' <summary> ''' ruft ab oder legt fest ob Escape in der Textbox ''' als Abbruch gewertet wird ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property OnEscapeCancel() As Boolean Get Return m_OnEscapeCancel End Get Set(ByVal value As Boolean) m_OnEscapeCancel = value End Set End Property ''' <summary> ''' ruft ab oder legt fest ob ein Enter in der Textbox als Ok gilt, ''' default = True ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property OnEnterOk() As Boolean Get Return m_SaveOnEnter End Get Set(ByVal value As Boolean) m_SaveOnEnter = value End Set End Property ''' <summary> ''' ruft ab oder legt fest die Location im Verhältnis zur aktiven Form, ''' default ist CenterParent ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property LocationStart() As Point Get Return m_LocationStart End Get Set(ByVal value As Point) m_LocationStart = value End Set End Property ''' <summary> ''' ruft ab ob auf Abbruch oder X-Button geclickt wurde ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public ReadOnly Property Canceled() As Boolean Get Return m_Canceled End Get End Property ''' <summary> ''' ruft ab oder legt fest ausschliesslich numerische Eingabe ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property NumericOnly() As Boolean Get Return m_NumericOnly End Get Set(ByVal value As Boolean) m_NumericOnly = value End Set End Property ''' <summary> ''' vorhandener Text wird bei Inputbox_MouseHover angezeigt ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property ToolTipText() As String Get Return m_ToolTipText End Get Set(ByVal value As String) m_ToolTipText = value End Set End Property ''' <summary> ''' ruft ab oder legt fest die Texteingabe ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property TextInput() As String Get Return TBox.Text End Get Set(ByVal value As String) TBox.Text = value End Set End Property ''' <summary> ''' ruft ab oder legt fest ein Zeichen für Passwordeingabe ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property PasswordChar() As Char Get Return TBox.PasswordChar End Get Set(ByVal value As Char) TBox.PasswordChar = value End Set End Property ''' <summary> ''' eine Box für Texteingabe ''' </summary> ''' <param name="Caption">Überschrift im Header</param> ''' <param name="Text">einzugebender Text</param> ''' <param name="mPasswordChar">Zeichen für Passwortverdeckung</param> ''' <param name="mNumericOnly">rein numerische Eingabe</param> ''' <param name="mOnEnterOk">Enter in Textbox gilt als Ok</param> ''' <param name="mOnEscapeCancel">Abbruch bei Escape in der Textbox</param> ''' <param name="mMaxLines">Anzahl Zeilen für Texteingabe, Default 1</param> ''' <param name="mMaxLength">maximal Anzahl Zeichen in Textbox</param> ''' <param name="mToolTipText">ein Tooltiptext</param> ''' <remarks></remarks> Public Sub New(Optional ByVal Caption As String = "", Optional ByVal Text As String = "", _ Optional ByVal mPasswordChar As String = "", _ Optional ByVal mNumericOnly As Boolean = False, _ Optional ByVal mOnEnterOk As Boolean = True, _ Optional ByVal mOnEscapeCancel As Boolean = True, _ Optional ByVal mMaxLines As Integer = 1, _ Optional ByVal mMaxLength As Integer = 32767, _ Optional ByVal mToolTipText As String = "") Init() Me.Text = Caption TBox.Text = Text If Not String.IsNullOrEmpty(mPasswordChar) Then TBox.PasswordChar = Convert.ToChar(mPasswordChar.Substring(0, 1)) End If NumericOnly = mNumericOnly OnEnterOk = mOnEnterOk OnEscapeCancel = mOnEscapeCancel ToolTipText = mToolTipText MaxLines = mMaxLines TBox.MaxLength = mMaxLength End Sub Private Sub Init() Lbl.Text = "Text: " Lbl.Location = New Point(5, 12) TBox.Location = New Point(40, 10) TBox.Size = New Size(200, TBox.Height) btnOk.Size = New Size(84, 28) btnOk.Text = "Ok" btnOk.Location = New Point(40, 40) btnCancel.Size = New Size(84, 28) btnCancel.Text = "Abbruch" btnCancel.Location = New Point(156, 40) Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow Me.Size = New Size(260, 100) Me.StartPosition = FormStartPosition.CenterParent Me.Controls.Add(TBox) Me.Controls.Add(Lbl) Me.Controls.Add(btnOk) Me.Controls.Add(btnCancel) End Sub Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles _ btnCancel.Click Me.Close() End Sub Private Sub btnOk_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOk.Click Call Ok() End Sub Private Sub Ok() If NumericOnly Then Dim d As Double = 0 If Not Double.TryParse(TBox.Text, d) Then Dim Titel As String = "numerische Eingabe" Dim Msg As String = "'" & TBox.Text & "'" & Environment.NewLine & "ist " & _ "kein gültiger numerischer Wert " MessageBox.Show(Msg, Titel, MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If End If m_Canceled = False Me.Close() End Sub Private Sub InputBox_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If LocationStart <> New Point(-1, -1) Then Dim Frm As Form = Windows.Forms.Form.ActiveForm Dim x As Integer = Frm.Left + LocationStart.X Dim y As Integer = Frm.Top + LocationStart.Y Me.Location = New Point(x, y) End If End Sub Private Sub InputBox_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.MouseHover If Not String.IsNullOrEmpty(ToolTipText) Then TT.Show(ToolTipText, Me) End If End Sub Private Sub TBox_KeyPress(ByVal sender As Object, ByVal e As _ System.Windows.Forms.KeyPressEventArgs) Handles TBox.KeyPress Dim NFI As System.Globalization.NumberFormatInfo = _ System.Globalization.CultureInfo.CurrentCulture.NumberFormat Dim DS As Char = Convert.ToChar(NFI.NumberDecimalSeparator) If (e.KeyChar = Convert.ToChar(13)) AndAlso OnEnterOk Then Call Ok() Exit Sub ElseIf (e.KeyChar = Convert.ToChar(27)) AndAlso OnEscapeCancel Then Me.Close() Exit Sub End If If NumericOnly Then Select Case e.KeyChar Case "0"c To "9"c Case "-"c If TBox.Text.IndexOf("-"c) >= 0 Then e.Handled = True End If Case Convert.ToChar(8) Case DS If TBox.Text.IndexOf(DS) >= 0 Then e.Handled = True End If Case Else e.Handled = True End Select End If End Sub End Class ' ------------------ Ende Datei InputBox.vb ------------------ ' ---------- Ende Projektdatei InputBoxTest.vbproj ----------
Diskussion
Diese Funktion ermöglicht es, Fragen, die die Veröffentlichung des Tipps betreffen, zu klären, oder Anregungen und Verbesserungsvorschläge einzubringen. Nach der Veröffentlichung des Tipps werden diese Beiträge nicht weiter verlinkt. Allgemeine Fragen zum Inhalt sollten daher hier nicht geklärt werden.
Folgende Diskussionen existieren bereits
Um eine Diskussion eröffnen zu können, müssen sie angemeldet sein.