| |
VB.NET - Ein- und UmsteigerRe: Rückgabe von InputBox | | | Autor: Snoopy | Datum: 06.04.06 21:12 |
| Hi Zero-G.
und was spricht dagegen, eine eigene InputBox zu bauen
Hier eine InputBox Marke Eigenbau - lege in deinem Projekt eine neue Klasse an und
füge folgenden Code in das Codefenster ein:
Public Class clsInputBox
Inherits System.Windows.Forms.Form
Friend WithEvents cmdAbbruch As System.Windows.Forms.Button
Friend WithEvents cmdOK As System.Windows.Forms.Button
Friend WithEvents txtValue As System.Windows.Forms.TextBox
Friend WithEvents lbCaption As System.Windows.Forms.Label
Private m_Result As String
Public Sub New()
MyBase.new()
End Sub
Public Overloads Function ShowDialog(ByVal sCaption As String, ByVal sTitle _
As String, ByRef sValue As String, ByVal sDefault As String) As _
System.Windows.Forms.DialogResult
InitializeComponent()
Me.lbCaption.Text = sCaption
Me.txtValue.Text = sDefault
Me.Text = sTitle
ShowDialog = MyBase.ShowDialog()
sValue = m_Result
Me.Close()
End Function
Private Sub InitializeComponent()
Me.lbCaption = New System.Windows.Forms.Label
Me.txtValue = New System.Windows.Forms.TextBox
Me.cmdOK = New System.Windows.Forms.Button
Me.cmdAbbruch = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'lbCaption
'
Me.lbCaption.AutoSize = True
Me.lbCaption.Location = New System.Drawing.Point(21, 34)
Me.lbCaption.Name = "lbCaption"
Me.lbCaption.Size = New System.Drawing.Size(31, 13)
Me.lbCaption.TabIndex = 0
Me.lbCaption.Text = "Input"
'
'txtValue
'
Me.txtValue.Location = New System.Drawing.Point(144, 32)
Me.txtValue.Name = "txtValue"
Me.txtValue.Size = New System.Drawing.Size(184, 20)
Me.txtValue.TabIndex = 1
'
'cmdOK
'
Me.cmdOK.DialogResult = System.Windows.Forms.DialogResult.OK
Me.cmdOK.Location = New System.Drawing.Point(88, 88)
Me.cmdOK.Name = "cmdOK"
Me.cmdOK.Size = New System.Drawing.Size(75, 23)
Me.cmdOK.TabIndex = 2
Me.cmdOK.Text = "OK"
Me.cmdOK.UseVisualStyleBackColor = True
'
'cmdAbbruch
'
Me.cmdAbbruch.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.cmdAbbruch.Location = New System.Drawing.Point(208, 88)
Me.cmdAbbruch.Name = "cmdAbbruch"
Me.cmdAbbruch.Size = New System.Drawing.Size(75, 23)
Me.cmdAbbruch.TabIndex = 3
Me.cmdAbbruch.Text = "Abbruch"
Me.cmdAbbruch.UseVisualStyleBackColor = True
'
'clsInputBox
'
Me.AcceptButton = Me.cmdOK
Me.CancelButton = Me.cmdAbbruch
Me.ClientSize = New System.Drawing.Size(364, 140)
Me.Controls.Add(Me.cmdAbbruch)
Me.Controls.Add(Me.cmdOK)
Me.Controls.Add(Me.txtValue)
Me.Controls.Add(Me.lbCaption)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "clsInputBox"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Private Sub txtValue_Validated(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles txtValue.Validated
m_Result = txtValue.Text
End Sub
End Class In deiner Form fügst Du dann folgenden Code ein (hier im Beispiel in Button1)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Dim RetValue As String = ""
Dim myInputBox As New clsInputBox
If myInputBox.ShowDialog("Bitte Wert eingeben", "Inputbox", RetValue, _
"1234") = Windows.Forms.DialogResult.OK Then
Debug.Print(RetValue)
End If
End Sub Du kannst das Style der InputBox natürlich noch an deine Bedürfnisse anpassen.
Viel Spaß damit...
Gruß
Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control | |
Rückgabe von InputBox | | | Autor: Zero-G. | Datum: 06.04.06 12:35 |
| Hallo NG
Ich übergebe per InputBox eine Zahl vom User an das Programm. - Habe jetzt aber das Problem, dass ich as Abbrechen/Ende nicht mehr benutzen kann. da ja als MsgBoxResult auch eine Zahl übergeben wird.
Wie kann ich das umgehen!?
mfg | |
Re: Rückgabe von InputBox | | | Autor: Zero-G. | Datum: 08.04.06 09:13 |
| AUSGEZEICHNET!
Danke - Hab ich auch schon daran gedacht. - hab es zwar etwas anders gelöst, aber eine ausgezeichnete Idee!!!
Danke
lg | |
Re: Rückgabe von InputBox | | | Autor: vbtricks | Datum: 08.04.06 09:58 |
| Salut,
kleine Frage am Rande: Habe ich das richtig gesehen, dass die InputBox nicht wie die MessageBox in der NET Class Library implementiert wird (außerhalb des VisualBasic-Namespaces)?
Stefan
Web: http://www.vbtricks.de.vu/
VBTricks.de.vu. Meine Webseite zu VB und anderen Programmiersprachen. Verschiedene fortgeschrittene OCXe und komplette Projekte sind im Sourcecode verf?gbar. | |
Inputbox für Mono Teil 1 | | | Autor: vbtest2 | Datum: 25.10.06 12:36 |
| Hallo,
ich habe eine ähnliche Inputbox, weil die mitgelieferte Version nicht unter Mono läuft:
Public Class Nachrichtenkasten
Inherits System.Windows.Forms.Form
Private WithEvents btnFertig As Button
Private WithEvents btnAbbruch As Button
Private lblMeldung As Label
Private txtEingabe As TextBox
Private components As System.ComponentModel.Container = Nothing
Private strEingabe As String
Dim drtRückgabewert As DialogResult
Public Sub New(ByVal strMeldung As String, ByVal strTitel As String, _
Optional ByVal strVoreinstellung As String = "", Optional ByVal XPos As _
Integer = -1, Optional ByVal YPos As Integer = -1)
InitializeComponent(strMeldung, strTitel, strVoreinstellung, XPos, YPos)
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private Sub InitializeComponent(ByVal strMeldung As String, ByVal strTitel _
As String, ByVal strVoreinstellung As String, ByVal XPos As Integer, _
ByVal YPos As Integer)
Me.txtEingabe = New TextBox()
Me.btnFertig = New Button()
Me.lblMeldung = New Label()
Me.btnAbbruch = New Button()
Me.SuspendLayout()
'
'lblMeldung
'
Me.lblMeldung.Location = New System.Drawing.Point(0, 0)
Me.lblMeldung.Name = "lblMeldung"
Me.lblMeldung.Size = New System.Drawing.Size(292, 25)
Me.lblMeldung.TabIndex = 3
Me.lblMeldung.Text = strMeldung
'
'txtEingabe
'
Me.txtEingabe.Location = New System.Drawing.Point(16, 26)
Me.txtEingabe.Name = "txtEingabe"
Me.txtEingabe.Size = New System.Drawing.Size(256, 20)
Me.txtEingabe.TabIndex = 2
Me.txtEingabe.Text = strVoreinstellung
'
'btnFertig
'
Me.btnFertig.DialogResult = System.Windows.Forms.DialogResult.OK
Me.btnFertig.Location = New System.Drawing.Point(208, 51)
Me.btnFertig.Name = "btnFertig"
Me.btnFertig.TabIndex = 1
Me.btnFertig.Text = "Fertig"
'
'btnAbbruch
'
Me.btnAbbruch.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.btnAbbruch.Location = New System.Drawing.Point(120, 51)
Me.btnAbbruch.Name = "btnAbbruch"
Me.btnAbbruch.TabIndex = 0
Me.btnAbbruch.Text = "Abbruch"
'
'Nachrichtenkasten
'
Me.AcceptButton = Me.btnFertig
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.CancelButton = Me.btnAbbruch
Me.ClientSize = New System.Drawing.Size(292, 77)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.lblMeldung, _
Me.btnAbbruch, Me.btnFertig, Me.txtEingabe})
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "Nachrichtenkasten"
Me.Text = strTitel
Me.ResumeLayout(False)
Me.Location = New Point(XPos, YPos) 'Position angeben
End Sub
Public ReadOnly Property Eingabe() As String
Get
Return strEingabe
End Get
End Property
Private Sub btnFertig_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles btnFertig.Click
drtRückgabewert = DialogResult.OK
strEingabe = txtEingabe.Text 'Eingabe zuweisen
End Sub
Private Sub btnAbbruch_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles btnAbbruch.Click
drtRückgabewert = DialogResult.Cancel
strEingabe = Nothing 'Eingabe löschen
End Sub
Public Function Schließen()
Return drtRückgabewert
Dispose()
End Function
End Class Dim s As New Nachrichtenkasten("BlaBlaBla BlaBlaBla BlaBlaBla BlaBlaBla" & _
"BlaBlaBla BlaBlaBla BlaBlaBla BlaBlaBla BlaBlaBla", "Titel", _
"Voreinstelliung", 1, 1)
s.ShowDialog()
If s.Schließen = DialogResult.Cancel Then MsgBox("Abbruch")
MsgBox(s.Eingabe) Weiter in Teil 2 | |
Re: Inputbox für Mono Teil 2 | | | Autor: vbtest2 | Datum: 25.10.06 12:36 |
| Jetzt habe ich 2 Probleme:
1. Mit VB 2002 wird der Intialize Code immer so zurückgeschnitten, wenn ich ein anderes Formular aufgeschrieben habe:
Private Sub InitializeComponent(ByVal strMeldung As String, ByVal strTitel _
As String, ByVal strVoreinstellung As String, ByVal XPos As Integer, _
ByVal YPos As Integer)
'
'Nachrichtenkasten
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.Name = "Nachrichtenkasten"
End Sub Die Klasse befindet sich unter einem Module Bereich. Wenn ich die Form wieder aufrufen will, wird die Form als Standartform ohne Steuerelemente angezeigt.
2. Das Programm läuft unter .NET, unter Mono 1.1.18 zeigt es eine leere Form an bricht dann ab. Unter Mono 1.1.18.1 bekomme ich überhaupt nichts zum laufen.
Kann man das Programm so verändern, daß es auch unter Mono läuft ? | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|