| |
VB.NET - Ein- und Umsteiger2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 18.07.14 02:45 |
| Hi Leute,
weiß von euch evtl. jmd. ne einfache Anleitung, wie man in der 1. Form Daten eingibt und sie in einer 2. Form wieder ausgibt? Muss nix großartiges sein, nur, damit ich sehe, wie's funktioniert.
Thx to u ppl!
Salut, Sloorg! | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Kuno60 | Datum: 18.07.14 13:40 |
| Hallo,
du kannst auf alles Zugreifen, was als Friend oder Public deklariert ist.
Einfach nur den Namen der Form voran stellen (Me ist die eigene Form).
Z.B. so in der ersten Form:Form2.TextBox1.Text = Me.TextBox4.Text
Form2.ShowDialog() Du kannst auch im Form-Load-Ereignis der 2. Form, die Werte aus der 1. Form lesen.
Me.TextBox1.Text = Form1.TextBox4.Text oder in eine Variable einlesen:
Dim eingabetext As String = Form1.TextBox4.Text Es gibt auch noch weitere Möglichkeiten, aber das ist eher was für Fortgeschrittene. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: effeff | Datum: 18.07.14 13:49 |
| Da jede Form eine eigene Klasse ist, ist es sinnvoller, deren Eigenschaften anzupassen als direkt auf Elemente zuzugreifen. Du beschreibst eher die eigentlich obsolete Methode von VB6, die zwar funktioniert, aber dieses nicht im Sinne von OOP macht.
EALA FREYA FRESENA | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Kuno60 | Datum: 18.07.14 14:07 |
| Hallo effeff,
Dein Link bezieht sich auf VB 2003. Dort musste man eine Form instanzieren, bevor man sie verwenden konnte. Seit VB 2005 werden Formulare wieder automatisch instanziert (Form1 = New Form1) und somit ist die Schreibweise aus VB6 immernoch gültig und funktioniert ohne Probleme.
| |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Kuno60 | Datum: 18.07.14 20:18 |
| Ja Dave, war mir klar, dass Du das schreiben wirst.
Du hast natürlich Recht, doch ist das Verwenden der Form-Variable für Anfänger und Testprojekte einfacher.
Außerdem kann mit wiederholtem Aufruf von Form1.Show(), eine Form nur einmal geöffnet werden.
Mit wiederholtem Aufruf vonDim f As Form = New Form1
f.Show() wird immer eine neue Instanz erstellt und geöffnet.
Will man eine Form öffentlich Verfügbar machen, z.B. so:Public HauptForm As Form1 so muss man vor jedem Öffnen HauptForm = New Form1 schreiben, bevor man die Form öffnen kann.
Das macht der Compiler sonst automatisch.
[u]Zur Vollständigkeit hier noch ein Beispiel für Sloorg, mit Argumentübergabe an Form2.
Füge die Sub New in Form2 ein.
Class Form2
Public Sub New(tx1 As String, tx2 As String)
InitializeComponent()
Me.TextBox1.Text = tx1
Me.TextBox2.Text = tx2
End Sub
End Class Und das ist der Aufruf in Form1.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
Button1.Click
Dim f As New Form2(Me.TextBox1.Text, Me.TextBox2.Text)
f.ShowDialog()
End Sub | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: DaveS (Moderator) | Datum: 18.07.14 20:29 |
| Die Tatsache bleibt, es funktioniert, bis es dann nicht funktioniert. Du verstehst dann wohl was das Problem ist. Die Programmierer, die nur einfache Lösungen verstehen sind dann hilflos. (Naja, es gibt noch die Foren). Was ist wirklich besser, zu lernen wie die Sachen wirklich sind, oder immer Hilfe im Forum zu suchen wenn etwas nicht klappt? Zu wissen was Klassen und Instanzen sind ist nicht wirklich schwierig.
Aber ja, das werde ich auch wohl sagen.
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: DaveS (Moderator) | Datum: 18.07.14 20:48 |
| Nochmal übrigens, dein Beispiel zeigt wo Missverständnisse lauern.
>>Außerdem kann mit wiederholtem Aufruf von Form1.Show(), eine Form nur einmal geöffnet werden.
Es kommt darauf an, ob mit .Show)() oder .ShowDialog() gemacht wird, Deine Behauptung ist eigentlich falsch, da mit .Show() beim Schließen die alte Instanz disposed wird. Der generierte Code kümmert sich darum, und legt eine neue Instanz an. Allerdings hat das auch sichtbare Konsequenzen, die nicht so leicht zu erklären sind wenn man nicht versteht was hinter den Kulissen wirklich los ist. (Etwa Controls behalten ihre Werte nicht).
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Kuno60 | Datum: 18.07.14 20:52 |
| Ja das hoffe ich doch, das er wirklich was lernen will. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Kuno60 | Datum: 18.07.14 21:03 |
| Ich meine damit, dass man Form1.Show() auch Aufrufen kann, wenn das Formular bereits geöffnet ist.
Es wird keine neue Instanz erstellt und auch kein Fehler ausgelöst.
ShowDialog() oder Show(Me) löst einen Fehler aus.
Klar beim Schließen wird die Instanz verworfen. Mit Hide() oder Visible = False bleibt sie bestehen. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 18.07.14 21:14 |
| Das ist nun mal so!
Am Anfang ist es immer schwer.
Da wird es immer Verständnisprobleme geben und Sachen die er nicht weiß.
Da ist es wenig hilfreich einfach nur "klugzuscheißen".
Man muss ihm schon ordentlich klar machen, dass wenn er es richtig macht, es zwar länger dauert, er aber auch besser strukturierte Programme entwickelt.
0 | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 19.07.14 13:56 |
| Danke, werd das mal probieren! | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 19.07.14 14:03 |
| Tja, das Thema wurde in unserem Kurs leider nicht behandelt und ich kann schlecht etwas schreiben, was ich noch nie gehört habe (außer in meinem alten VB 6-Buch, da war das gut erklärt - vb 6.0 Schritt für Schritt).
Hab auch an den Experten geschrieben, dass man die Aufgabe höchstens mit ÜSW (Übersinnnlicher Wahrnehmung) lösen kann; der meinte dann, ich hätte nicht unrecht, aber jetzt am Ende des Kurses sollte man selbst sehen, wie man weiterkommt ... na toll... - dann schreib ich's halt in vb 6, das wäre eh einfacher... aber wird dann wohl nicht akzeptiert ...
Aber danke, Gruß, Sloorg. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 19.07.14 16:54 |
| Wenn du ganz sicher weißt, dass das Programm was du schreiben willst, nur du verwenden wirst (irgendwelche kleine Hilfsprogramme) dann kannst du es auch in Visual Basic 6 schreiben. Das mache ich auch so.
Auch wenn die Art und Weise in Visual Basic 6 nicht so angenehm ist, wie in VB.NET.
Wenn du aber nicht sicher bist, ob der Quellcode andere Leute zu sehen bekommen, dann solltest du lieber VB.NET verwenden (oder gleich C# (ist allerdings bisschen schwerer)). 0
Beitrag wurde zuletzt am 19.07.14 um 16:55:30 editiert. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 20.07.14 01:57 |
| Hi Kuno,
ok, ich hab jetzt zu meinem Idealgewichtsrechner ne 2. Form hinzugefügt - war eigentl. gar nicht schwer; wenn man auf den Button "Berechnen" klickt, wird Form 2 geöffnet. Jetzt würde ich aber gerne die Ausgabe, die vorher auf Label 1 + 4 fiel, auf Form 2 in Label 1 + 2 ausgeben. Das klappt aber nicht... Wie müsste ich das umschreiben? Wäre echt dankbar für Hilfe, sollte das nächste Woche abgeben! die letzte Aufgabe, dann endl. Kursende. Hier der Code:
Form 1:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) _
Handles MyBase.Load
RadioButton1.Checked = True
End Sub
Private Sub Berechnen()
Dim Gewicht As Single
Dim Groesse As Single
Dim Idealgewicht As Single
Dim Faktor As Single = 0.9
If RadioButton2.Checked = True Then Faktor = 0.85
If Trim$(TextBox1.Text) <> "" Then
Gewicht = CDec(TextBox1.Text)
Else
Gewicht = 0
End If
If Trim$(TextBox2.Text) <> "" Then
Groesse = CDec(TextBox2.Text)
Else
Groesse = 0
End If
If Gewicht > 0 And Groesse > 0 Then
Idealgewicht = CSng((Groesse - 100) * 0.9)
Label1.Text() = "Ihr Idealgewicht: " & Idealgewicht & " " & "- Ihr" & _
"Gewicht:" & Gewicht.ToString("0")
Select Case Gewicht - Idealgewicht
Case Is < -0.5
Label4.Text = "Sie haben Untergewicht"
Case Is > 0.5
Label4.Text = "Sie haben Übergewicht"
Case Else
Label4.Text = "Sie haben Normalgewicht"
End Select
Else
Label1.Text() = "Ihr Wert: " & 0
End If
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles TextBox1.TextChanged
Berechnen()
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles TextBox2.TextChanged
Berechnen()
End Sub
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Label1.Click
End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
End Sub
Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Label2.Click
End Sub
Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Label3.Click
End Sub
Private Sub Label4_Click(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles Label4.Click
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Form2.ShowDialog()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
End Class Form 2:
Public Class Form2
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Label1.Click
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Label2.Click
End Sub
End Class | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 20.07.14 10:14 |
| Du solltest die Werte, welche du als gültig bewertest, außerhalb der Form speichern oder die Variablen außerhalb der Sub im Formular erstellen.
Also statt diesem hier:
Private Sub Berechnen()
Dim Gewicht As Single
Dim Groesse As Single
Dim Idealgewicht As Single
Dim Faktor As Single = 0.9 eher das:
Public Class Form1
Public Gewicht As Single
Public Groesse As Single
Public Idealgewicht As Single
Public Faktor As Single = 0.9 ... 0
Beitrag wurde zuletzt am 20.07.14 um 10:16:07 editiert. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Manfred X | Datum: 20.07.14 11:04 |
| Public Class frmInputWeight
Dim lblWeight As New Label With _
{.Parent = Me, .Text = "Input Weight (kg):", .Width = 150}
Dim txtWeight As New TextBox With _
{.Parent = Me, .Left = lblWeight.Width + 5}
Dim WithEvents btnDisplayWeight As New Button With _
{.Parent = Me, .Text = "Display Weight in Form", _
.Width = 300, .Top = 100}
Private Sub btnDisplayWeight_Click(sender As Object, e As System.EventArgs) _
Handles btnDisplayWeight.Click
Dim weight As Decimal
If Not Decimal.TryParse(txtWeight.Text, weight) Then
MsgBox("Not a number") : Exit Sub
End If
Using myDisplayweight As New frmDisplayWeight
With myDisplayweight
.WeightToDisplay = weight
.ShowDialog()
End With
End Using
End Sub
End Class
Public Class frmDisplayWeight
Dim displayedweight As Decimal = -1D
Dim txtWeight As New TextBox With _
{.Parent = Me, .Font = New Font("Arial", 36, _
FontStyle.Bold), _
.Width = 300, .Height = 300}
Public Property WeightToDisplay As Decimal
Set(value As Decimal)
If value < 10 Or value > 150 Then
Throw New ArgumentException("Illegal Weight")
End If
displayedweight = value
txtWeight.Text = Format(value, "0.00 kg")
End Set
Get
If displayedweight = -1 Then
Throw New ArgumentException("No weight available")
End If
Return displayedweight
End Get
End Property
End Class | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 20.07.14 12:25 |
| Er hat Probleme beim Anzeigen der Werte auf Form2.
Sein Kenntnisstand ist also nicht so, dass du ihm mit einer neu erstellten Klasse ohne Kontext weiterhilfst.
Du solltest im besser nicht einfach nur deine Klasse hinwerfen, sondern auch gleich in sein Programm einbauen. 0 | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Manfred X | Datum: 20.07.14 13:02 |
| Es geht in einem Forum nicht darum, irgendwas in irgendwelchen Code einzubauen.
Ausführbare Code-Beispiele sollen kurz, übersichtlich und im Debugger nachvollziehbar
das Prinzip sichtbar machen, durch das eine angefragte Zielsetzung erreicht werden kann.
Wer trotzdem etwas nicht versteht, kann nachfragen.
| |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 20.07.14 18:59 |
| Ich habe dir deine Aufgabe grob programmiert.
Das mit dem Namen stand zwar nicht hier, aber das habe ich zufällig in dem anderen Thema gesehen.
Das Projekt kannst du dir hier downloaden: http://sv00010.de/vbnet/Idealgewichtrechner.zip
Du kannst es dann natürlich noch anpassen z.B. Schriftfarbe ändern usw. 0
Beitrag wurde zuletzt am 20.07.14 um 19:00:48 editiert. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 20.07.14 20:38 |
| Wow, super cool!
War hier echt schon am Verzweifeln. Ich mach das ja auch erst 3 Monate - dann soll man schon alles können... Aber das ist die letzte Aufgabe, dann ist der Kurs endlich durch und ich kann normal in Ruhe lernen.
Eine Frage: Ergebnis.vb ist wohl die 2. Form, oder?
PS: ich wollte noch die Farbe der 2. Form ändern, falls ein Weibchen (weibl.) anklickt, aber da tut sich leider nix:
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles RadioButton2.CheckedChanged
frm = New Form2
frm.BackColor = Color.Red 'od. pink
End Sub
End Class Nochmal merci, Sloorg. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 20.07.14 20:55 |
| Ja. Ergebnis.vb ist das was bei dir Form2 sein soll.
Vermutliche Änderung (Hintergrundfarbe des Ergebnisformulars rot bei weiblich):
Private Sub ShowErgebnis(ByVal strTextGewicht As String, ByVal _
strTextErgebnisGewicht As String)
Ergebnis.Show()
Ergebnis.Label_Gewicht.Text = strTextGewicht
Ergebnis.Label_Ergebnis_Gewicht.Text = strTextErgebnisGewicht
If Me.RadioButton_Frau.Checked = True Then
Ergebnis.BackColor = Color.Red
Ergebnis.Label_Gewicht.BackColor = Color.Red
Ergebnis.Label_Ergebnis_Gewicht.BackColor = Color.Red
Else
Ergebnis.BackColor = System.Drawing.SystemColors.Control
Ergebnis.Label_Gewicht.BackColor = _
System.Drawing.SystemColors.Control
Ergebnis.Label_Ergebnis_Gewicht.BackColor = _
System.Drawing.SystemColors.Control
End If
End Sub 0
Beitrag wurde zuletzt am 20.07.14 um 21:07:20 editiert. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 20.07.14 21:12 |
| Thx to u, man!
Dann mach ich das Hauptformular in blau, weibl. rot und evtl. noch paar Bildchen rein.
Endl. Land in Sicht!
Dafür geb ich einen Blizzard aus: (eiskalt genießen!)
http://www.bing.com/images/search?q=blizzard+red+berry&id=3292E88F607AB1513588049CDA5166303603DC67&FORM=IQFRBA#view=detail&id=3292E88F607AB1513588049CDA5166303603DC67&selectedIndex=0
Cheers, Sloorg. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Manfred X | Datum: 20.07.14 21:13 |
| Wenn ein Formular auf eine Datenlage reagieren soll,
dann richtet man eine entsprechende Property ein (z.B. Geschlecht).
Falls z.B. im aufrufenden Formular "Frau" auf diese Property zugewiesen wird,
stellt man im Code der Property "Geschlecht" dieses Formulars alle erforderlichen
Controls auf das gegebene Geschlecht ein.
Das wird NICHT im Code des aurufenden Formulars erledigt.
Klassen/Formulare kooperieren über Properties und Events miteinander - sie
pfuschen sich nicht gegenseitig in die internen Strukturen/Abläufe.
| |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 20.07.14 21:15 |
| Hi Manne,
merci! Ist inputweight wohl für form 1 und displayweight für form 2?
Salut, Sloorg. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 22.07.14 05:48 |
| Hiya,
das mit der 2. Form in roter Farbe klappt zwar, aber ich dachte, ich kann die Farbe für die 1. Ausgabe-Form (männl.) einfach per Eigenschaften in blau ändern, aber klappt leider nicht. Hatte auch versucht, obigen Code zusätzl. einzusetzen und in blau zu ändern für männl. Ausgabe, aber ging auch net...
Und: Wir haben vergessen, den Namen auszugeben - wie kann man das ergänzen? Hallo und kg hab ich ergänzt, aber dass der Name ausgegeben wird, krieg ich leider nicht hin.
'Text für Gewicht zusammensetzen
strTextGewicht = "Hallo " & "Ihr Idealgewicht: " & CStr( _
dblIdealgewicht) & " kg" & " - Ihr " & _
"Gewicht: " & CStr(dblGewicht.ToString) & " kg" Salut, Sloorg!
| |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 22.07.14 17:07 |
| Tja, wie ich das sonst mache, geht das nicht, weil das ganz anders geschrieben ist - hab's so eingebaut, aber geht nicht:
'Text für Gewicht zusammensetzen
strTextGewicht = "Hallo " & strTextName & "Ihr Idealgewicht: " & CStr( _
dblIdealgewicht) & " kg" & " - Ihr " & _
"Gewicht: " & CStr(dblGewicht.ToString) & " kg" Hab hier noch strTextName eingefügt, aber meckert:
Private Sub ShowErgebnis(ByVal strTextGewicht As String, ByVal _
strTextErgebnisGewicht As String)
Ergebnis.Show()
Ergebnis.Label_Gewicht.Text = strTextName
Ergebnis.Label_Gewicht.Text = strTextGewicht
Ergebnis.Label_Ergebnis_Gewicht.Text = strTextErgebnisGewicht
End Sub Hier auch ergänzt:
Private Sub Button_Calculate_Click( ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button_Calculate.Click
Dim dblLength As Double = Nothing
Dim dblGewicht As Double = Nothing
Dim dblFaktor As Double = Nothing
Dim dblIdealgewicht As Double = Nothing
Dim dblDifference As Double = Nothing
Dim strTextErgebnisGewicht As String = Nothing
Dim strTextGewicht As String = Nothing
Dim strTextName As String = Nothing
Const FAKTOR_MANN As Double = 0.9
Const FAKTOR_FRAU As Double = 0.85 ...
Gruß, Sloorg. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 22.07.14 17:14 |
| PS: Hier zur Übersicht die ganze Seite:
Public Class Dateneingabe
Private Sub Dateneingabe_Load(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles Me.Load
'Beim Laden des Formular den Radiobutton auf Männlich setzen
'(damit gleich am Anfang ein sinnvoller Wert vorausgewählt ist)
Me.RadioButton_Mann.Checked = True
End Sub
Private Sub TextBox_Name_TextChanged( ByVal sender As System.Object, ByVal _
e As System.EventArgs) Handles TextBox_Name.TextChanged
'Button_Calculate einstellen
Validierung.CheckAndSetButton_Calculate()
End Sub
Private Sub TextBox_Gewicht_TextChanged( ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles TextBox_Gewicht.TextChanged
'Button_Calculate einstellen
Validierung.CheckAndSetButton_Calculate()
End Sub
Private Sub TextBox_Size_TextChanged( ByVal sender As System.Object, ByVal _
e As System.EventArgs) Handles TextBox_Size.TextChanged
'Button_Calculate einstellen
Validierung.CheckAndSetButton_Calculate()
End Sub
Private Sub RadioButton_Mann_CheckedChanged( ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles RadioButton_Mann.CheckedChanged
'Button_Calculate einstellen
Validierung.CheckAndSetButton_Calculate()
End Sub
Private Sub RadioButton_Frau_CheckedChanged( ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles RadioButton_Frau.CheckedChanged
'Button_Calculate einstellen
Validierung.CheckAndSetButton_Calculate()
End Sub
Private Sub Button_Calculate_Click( ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles Button_Calculate.Click
Dim dblLength As Double = Nothing
Dim dblGewicht As Double = Nothing
Dim dblFaktor As Double = Nothing
Dim dblIdealgewicht As Double = Nothing
Dim dblDifference As Double = Nothing
Dim strTextErgebnisGewicht As String = Nothing
Dim strTextGewicht As String = Nothing
Const FAKTOR_MANN As Double = 0.9
Const FAKTOR_FRAU As Double = 0.85
If Me.RadioButton_Mann.Checked = True Then
'Wenn der RadioButton für männlich ausgewäht ist,
'dann den Wert für männlich zuweisen
dblFaktor = FAKTOR_MANN
Else
'Andernfalls den Wert für weiblich zuweisen
dblFaktor = FAKTOR_FRAU
End If
'Wert aus der TextBox für Größe nach Double konvertieren
'Sollte ein Konvertierungsfehler auftreten (was eigentlich nicht sein
' sollte),
'dann sofort zum Fehlerausgang.
If Helper.ConvertTextToDouble(Me.TextBox_Size.Text, dblLength) = False _
Then Goto ErrorExit
'--->>
'--->>
'Wert aus der TextBox für Gewicht nach Double konvertieren
'Sollte ein Konvertierungsfehler auftreten (was eigentlich nicht sein
' sollte),
'dann sofort zum Fehlerausgang.
If Helper.ConvertTextToDouble(Me.TextBox_Gewicht.Text, dblGewicht) = _
False Then Goto ErrorExit
'--->>
'--->>
'Idealgewicht berechnen
dblIdealgewicht = Berechnung.Calculate_Idealgewicht(dblLength, _
dblFaktor)
'Differenz zwischen Gewicht und Idealgewicht ausrechnen
dblDifference = dblGewicht - dblIdealgewicht
'Text für Gewicht zusammensetzen
strTextGewicht = "Hallo " & "Ihr Idealgewicht: " & CStr( _
dblIdealgewicht) & " kg" & " - Ihr " & _
"Gewicht: " & CStr(dblGewicht.ToString) & " kg"
Select Case dblDifference
Case Is < -0.5
strTextErgebnisGewicht = "Sie haben Untergewicht."
Case Is > 0.5
strTextErgebnisGewicht = "Sie haben Übergewicht."
Case Else
strTextErgebnisGewicht = "Sie haben Normalgewicht."
End Select
'Formular anzeigen und Werte einfüllen.
Me.ShowErgebnis(strTextGewicht, strTextErgebnisGewicht)
'Muss rein, damit nicht in den Fehlerausgang reingelaufen wird.
Exit Sub
'Fehlerausgang
ErrorExit:
'Hier kann noch eine Meldung eingebaut werden, falls benötigt.
End Sub
Private Sub ShowErgebnis(ByVal strTextGewicht As String, ByVal _
strTextErgebnisGewicht As String)
Ergebnis.Show()
Ergebnis.Label_Gewicht.Text = strTextGewicht
Ergebnis.Label_Ergebnis_Gewicht.Text = strTextErgebnisGewicht
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
End Class | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 22.07.14 18:12 |
| Ich habe das mit dem Namen anzeigen auch noch eingebaut:
http://sv00010.de/vbnet/Idealgewichtrechner_2014_07_22.zip
Ich musste da übrigens an ein Zitat aus einem Film denken:
"Üben, immer üben, sonst werfen sie dich irgendwann raus aus dem Feuerwehrchor!" 0 | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 22.07.14 23:50 |
| Hey, du bist ja echt super! 1000 Dank, Mann. Bis ich deinen Status mal erreicht habe, wird wohl Jahre dauern. - Woher eigentlich der Name sv00010? Hattest wohl mal Assembler programmiert? - Aber bin ich froh, wenn der Kurs endlich vorbei ist. Dann werd ich erstmal einige Tutorials machen. Erstmal easy nachbauen liegt mir eher, als so ein Crashkurs, wo man unter Zeitdruck ist und man im Regen stehen gelassen wird. - OK, nochmal vielen Dank!
Salut, Sloorg! | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 23.07.14 00:36 |
| PS: Was war denn das für ein Film? - Aber ich hab's mir angesehn, wie du das eingebaut hast - wieder was gelernt!
- Mir kam da noch ne lustige Idee: Noch nen 3. Radiobutton einfügen: männl., weibl. - "andere". Hahaha! Wenn sich dann die Ausgabe (in pink) öffnet, kommt ein Foto von Klöögler, od. wie der heißt. lol - der Dozent wär geschockt!
OK, ich bin jedenfalls erleichtert, dass ich das endl. abgeben kann! Mille e due grazie! | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 23.07.14 07:16 |
| Nein, Assembler kann ich nicht.
Ich wollte eine E-Mail-Adresse haben ohne meinen Namen zu verwenden.
Zuerst hatte ich es mit 007 versucht, aber die war schon weg.
Dann wurde ich 00010. Ich habe dann allerdings schnell gemerkt,
dass bei manchen Internetforen keine Namen erlaubt sind, welche nicht mit einem Buchstaben anfangen.
Deshalb noch sv immer davor.
Den Film mit dem Zitat:
http://www.budspencer.de/filmographie/detail.php?filmid=11
Dein Problem mit dem Programm war, dass du nicht weißt, wie die TextBoxen heißen.
http://sv00010.de/vbnet/Eigenschaften_Dateneingabe.jpg 0 | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 23.07.14 07:57 |
| Hi, sv00010,
okie-dokie - kann mich gar nicht an die Szene erinnern, obwohl ich von Bud Spencer und Terence Hill sicher alle Filme gesehen hab. (Aber is ja lang her)
- Ja, dein Aufbau des Programms ist ja total professionell - da kann ich nur staunen!
Wie konntest du eigentlich eine *.zip-Datei hier hochladen? Seh hier nämlich keine Option dafür...
OK, nochmal merci,
schöne Grüße,
Sloorg! | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 23.07.14 08:35 |
| Ich habe die zip-Datei auf meine Internetseite hochgeladen und dann die URL als Link eingefügt. 0
Beitrag wurde zuletzt am 23.07.14 um 08:39:08 editiert. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 23.07.14 22:41 |
| OK!
Aber is och noch nicht ganz fertig – jetzt wird zwar der Name ausgegeben, aber das Gewicht nicht mehr: Dim dblLength As Double = Nothing
Dim dblGewicht As Double = Nothing
Dim dblFaktor As Double = Nothing
Dim dblIdealgewicht As Double = Nothing
Dim dblDifference As Double = Nothing
Dim strTextErgebnisGewicht As String = Nothing
Dim strTextGewicht As String = Nothing
Dim strTextAnrede As String = Nothing
Const FAKTOR_MANN As Double = 0.9
Const FAKTOR_FRAU As Double = 0.85
If Me.RadioButton_Mann.Checked = True Then
'Wenn der RadioButton für männlich ausgewäht ist,
'dann den Wert für männlich zuweisen
dblFaktor = FAKTOR_MANN
strTextAnrede = "Hallo Herr " & Me.TextBox_Name.Text & ","
Else
'Andernfalls den Wert für weiblich zuweisen
dblFaktor = FAKTOR_FRAU
strTextAnrede = "Hallo Frau/Frl. " & Me.TextBox_Name.Text & ","
End If
'Wert aus der TextBox für Größe nach Double konvertieren
'Sollte ein Konvertierungsfehler auftreten (was eigentlich nicht sein
' sollte),
'dann sofort zum Fehlerausgang.
If Helper.ConvertTextToDouble(Me.TextBox_Size.Text, dblLength) = False _
Then Goto ErrorExit
'--->>
'--->>
'Wert aus der TextBox für Gewicht nach Double konvertieren
'Sollte ein Konvertierungsfehler auftreten (was eigentlich nicht sein
' sollte),
'dann sofort zum Fehlerausgang.
If Helper.ConvertTextToDouble(Me.TextBox_Gewicht.Text, dblGewicht) = _
False Then Goto ErrorExit
'--->>
'--->>
'Idealgewicht berechnen
dblIdealgewicht = Berechnung.Calculate_Idealgewicht(dblLength, _
dblFaktor)
'Differenz zwischen Gewicht und Idealgewicht ausrechnen
dblDifference = dblGewicht - dblIdealgewicht
'Text für Gewicht zusammensetzen
strTextGewicht = "Ihr Idealgewicht beträgt: " & CStr(dblIdealgewicht) & _
" kg" & " - Ihr " & _
"Gewicht: " & CStr(dblGewicht.ToString) & " kg"
Select Case dblDifference
Case Is < -0.5
strTextErgebnisGewicht = "Sie haben Untergewicht."
Case Is > 0.5
strTextErgebnisGewicht = "Sie haben Übergewicht."
Case Else
strTextErgebnisGewicht = "Sie haben Normalgewicht."
End Select
'Formular anzeigen und Werte einfüllen.
Me.ShowErgebnis(strTextAnrede, strTextGewicht, strTextErgebnisGewicht)
'Muss rein, damit nicht in den Fehlerausgang reingelaufen wird.
Exit Sub
'Fehlerausgang
ErrorExit:
'Hier kann noch eine Meldung eingebaut werden, falls benötigt.
End Sub
Private Sub ShowErgebnis(ByVal strTextAnrede As String, ByVal _
strTextGewicht As String, ByVal strTextErgebnisGewicht As String)
Ergebnis.Show()
'Sofort nach dem Anzeigen des Formulars dieses weiter nach rechts
' rücken,
'damit das Eingabeformular nicht überdeckt wird.
Ergebnis.Location = New Point(Me.Location.X + Me.Width + 20, _
Me.Location.Y)
Ergebnis.Label_Name.Text = strTextAnrede
Ergebnis.Label_Gewicht.Text = strTextGewicht
Ergebnis.Label_Ergebnis_Gewicht.Text = strTextErgebnisGewicht
If Me.RadioButton_Frau.Checked = True Then
Ergebnis.BackColor = Color.Salmon
Ergebnis.Label_Name.BackColor = Color.Salmon
Ergebnis.Label_Gewicht.BackColor = Color.Salmon
Ergebnis.Label_Ergebnis_Gewicht.BackColor = Color.Salmon
Else
Ergebnis.BackColor = Color.LightBlue
Ergebnis.Label_Name.BackColor = Color.LightBlue
Ergebnis.Label_Gewicht.BackColor = Color.LightBlue
Ergebnis.Label_Ergebnis_Gewicht.BackColor = Color.LightBlue
End If
End Sub Wenn ich hier & Gewicht einfüge, krieg ich ne Fehlermeldung:
'Text für Gewicht zusammensetzen
strTextGewicht = "Ihr Idealgewicht beträgt: " & CStr(dblIdealgewicht) & _
" kg" & " - Ihr " & _
"Gewicht: " & Gewicht CStr(dblGewicht.ToString) & " kg" So auch:
strTextGewicht = "Ihr Idealgewicht beträgt: " & CStr(dblIdealgewicht) & " kg" & _
" - Ihr " & _
"Gewicht: " & CStr(dblGewicht.ToString) & Gewicht & " kg" Hat vllt. jmd. ne Lösung? Merci! | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 24.07.14 05:58 |
| ... & "Gewicht" & ...
Wenn der Text so genommen werden soll, wie du ihn schreibst dann "" herum machen.
Du musst wirklich üben, am besten gleich alle Grundlagen. 0
Beitrag wurde zuletzt am 24.07.14 um 05:59:22 editiert. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 24.07.14 18:03 |
| Hi,
So gibt es zwar den String „Gewicht“ aus, aber nicht die Zahl der kg (+ den String & " kg" auch nicht mehr):
'Text für Gewicht zusammensetzen
strTextGewicht = "Ihr Idealgewicht beträgt: " & CStr(dblIdealgewicht) & _
" kg" _
& " Ihr Gewicht beträgt: " & CStr(dblGewicht) & " kg" Aber was soll's, ich lass das einfach weg.
Gruß, Sloorg. | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: sv00010 | Datum: 24.07.14 19:51 |
| Die Labels sind zu kurz.
Ich habe drei kleine Labels genommen, damit ich die Texte ordentlich positionieren kann.
Durch den hinzugefügten Text reicht es dann nicht mehr.
Einfach das Formular und die Labels ein bisschen länger machen. 0 | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 25.07.14 03:55 |
| Ahso, dachte schon komisch, wieso das nicht mehr geht. Hatte noch etwas dran gebastelt. - Hab auch noch als Gag einen bayrischen Idealgewichtsrechner gebastelt - is lustig, muss ich mal hochladen.
Bye, Sloorg! | |
Re: 2Forms: Dateneingabe in Form1, Ausgabe in Form2 | | | Autor: Sloorg | Datum: 26.07.14 02:18 |
| Hallo und nochmals vielen Dank an alle, die mich tatkräftig unterstützt haben.
Salut, Sloorg! | |
| 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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|