| |
Suche Visual-Basic CodeButton in Form 1 ändern wenn Form 2 geschlossen wird | | | Autor: Corai | Datum: 29.10.18 19:36 |
| Hallo zusammen,
meine Frau macht eine Ausbildung zur IT- Kauffrau und ich schnupper in diesem Zuge bei ein Themen etwas mit. Speziell gefällt mir das programmieren von VB.
Bereits Anfang der 2000er habe ich in VBA (nur absolute Basics) und davor Q-Basic gemacht.
Derzeit bastle ich ein kleines Tower Defense mit Textbox. Allerdings kommt es derzeit zu einem Problem.
[u]Bevor ihr weiter lest: bitte denkt daran, dass ich Einsteiger bin und zerreißt mich nicht in der Luft. Ich habe durch Familie, Haus und Garten
recht wenig Zeit und kann mich daher nicht sehr in Themen wie VB net oder VB6 vertiefen. Daher hoffe ich, dass ihr mir einfach mit nem Code helfen könnt.
Vielen Dank.
In meinem Hauptfenster gibt es einen Button, der Anfangs wie folgt beschriftet ist:
"Aktuelle Auswahl:
1"
Sobald man da drauf klickt, kommt man in eine andere "Form" in dem man über Buttons die Welle wechseln kann. Ich habe nun bereits über das Internet die
nützlichen globalen Variablen gefunden, um Werte von der Auswahl auf meine Haupt-Form zu übertragen.
Allerdings fehlen mir ein paar Infos. Sobald natürlich eine andere Welle in Form 2 gewählt wurde, soll sich der Button in der Hauptform ändern. Ich habe es
hiermit probiert:
Private Sub frmspiel_show(sender As Object, e As EventArgs) Handles _
MyBase.Load
btnauswahl.Text = "Aktuelle Auswahl: " & Chr(13) & Chr(13) & _
pubvarmodul.welleaktuell
lbxspieletext.Items.Add(pubvarmodul.welleaktuell)
End Sub Aber leider funktioniert es damit nicht. Dabei spielt es keine Rolle, ob ich die Hauptform vorher mit me.hide verstecke oder nicht.
Ich kann leider nur maximal 5 KB hier schreiben, aber mit VB Code ist es länger. Wie kann ich den dann hier einfügen?
Daher nur mal der Text der Nebenform:
'Dadurch sehe ich meine Fehler:
Option Strict On
Public Class wellenauswahl
Private Sub wellewechseln()
frmspiel.Show()
Me.Hide()
End Sub
Private Sub btnwelle1_Click(sender As Object, e As EventArgs) Handles _
btnwelle1.Click
pubvarmodul.welleaktuell = 1
wellewechseln()
End Sub
Private Sub btnwelle2_Click(sender As Object, e As EventArgs) Handles _
btnwelle2.Click
pubvarmodul.welleaktuell = 2
wellewechseln()
End Sub
Private Sub btnwelle3_Click(sender As Object, e As EventArgs) Handles _
btnwelle3.Click
pubvarmodul.welleaktuell = 3
wellewechseln()
End Sub
Private Sub btnwelle4_Click(sender As Object, e As EventArgs) Handles _
btnwelle4.Click
pubvarmodul.welleaktuell = 4
wellewechseln()
End Sub
Private Sub btnwelle5_Click(sender As Object, e As EventArgs) Handles _
btnwelle5.Click
pubvarmodul.welleaktuell = 5
wellewechseln()
End Sub
End Class Ich möchte nun, dass beim Klick auf z.B. Button 3 in der Auswahlform sich eben die aktuelle Welle wechselt, sich aber in diesem Zuge gleich in der o.g. Form
das Buttonlabel verändert. Wie bekomme ich diese Info von der letzteren Form zur ersten Form?
Über eine nette Antwort würde ich mich freuen. Und bitte nicht schimpfen mit dem vermutlich schlechten Code. Freue mich einfach nur, wenn ich jeden Tag ein
paar Minuten (oder manchmal nur am Wochenende mal 30 Minuten) Zeit finde, daran rum zu basteln.
Durch den Zeitmangel sind halt nur so Miniprojekte möglich.
Vielen Dank im Voraus
Corai | |
Re: Button in Form 1 ändern wenn Form 2 geschlossen wird | | | Autor: Corai | Datum: 29.10.18 19:37 |
| Hier Form 1:
Option Strict On
Public Class frmspiel
Dim level As Int16 = 1
Dim lebengesamt As Int32 = 100
Dim lebenaktuell As Int32 = lebengesamt
Dim staerke As Int32 = 10 'Stärke des Turms
Dim defense As Int32 = 10 'Verteidigung des Turms
Dim xpmax As Int32 = 100
Dim xpaktuell As Int32 = 0
Dim gegnerstaerke As Int32 = 10
Dim gegnerdef As Int32 = 1
Dim gegnerhp As Int32 = 10
Dim angriff As Int32 = 10 'Angriffswert für Turm und Gegner
Dim schaden As Int32 = 0 'Schaden, der tatsächlich verursacht wird
Dim zufallszahl As New Random
Private Sub wellenstart()
'Prozedur - Diese passiert, sobald man auf Start klickt!
btnwellestart.Enabled = False
btnauswahl.Enabled = False
'Spieler hat Welle gestartet:
lbxspieletext.Items.Add("Welle 1 wurde gestartet.")
lbxspieletext.SelectedIndex = lbxspieletext.Items.Count - 1
Delay(1)
lbxspieletext.Items.Add("Gegner greift an.")
lbxspieletext.SelectedIndex = lbxspieletext.Items.Count - 1
Delay(1)
'Gegner greift an:
schaden = gegnerstaerke - (defense \ 2)
lbxspieletext.Items.Add("Gegner verursacht " & schaden & " Schaden.")
lbxspieletext.SelectedIndex = lbxspieletext.Items.Count - 1
lebenaktuell = lebenaktuell - schaden
pbLeben.Value = lebenaktuell
Delay(1)
'Turm verteidigt sich:
lbxspieletext.Items.Add("Turm verteidigt sich.")
lbxspieletext.SelectedIndex = lbxspieletext.Items.Count - 1
'angriff = zufallszahl.Next(-10, 11) \ 10 -- Variante, jedoch nicht
' ausgereift. Benötigte Minuswerte & Kommastellen
'schaden = (staerke + angriff) - (gegnerdef \ 2)
schaden = staerke - (gegnerdef \ 2)
lbxspieletext.Items.Add("Du verursachst " & schaden & " Schaden.")
lbxspieletext.SelectedIndex = lbxspieletext.Items.Count - 1
gegnerhp = gegnerhp - schaden
lbxspieletext.Items.Add("Gegner hat noch " & gegnerhp & " Leben.")
lbxspieletext.SelectedIndex = lbxspieletext.Items.Count - 1
If gegnerhp > 0 Then
'Sofern Gegner noch lebt passiert folgendes:
End If
btnauswahl.Enabled = True
btnwellestart.Enabled = True
End Sub
Private Sub frmspiel_Load(sender As Object, e As EventArgs) Handles _
MyBase.Load
'Sobald das Spiel geladen wird
lbllevel.Text = level.ToString
lbllebenwert.Text = lebenaktuell.ToString & "/" & lebengesamt.ToString
pbLeben.Value = lebenaktuell
lblangriffwert.Text = 10.ToString
lbldefwert.Text = 10.ToString
lblxpwert.Text = xpaktuell & "/" & xpmax
pblevel.Value = xpaktuell
pubvarmodul.welleaktuell = 1
btnauswahl.Text = "Aktuelle Auswahl: " & Chr(13) & Chr(13) & _
pubvarmodul.welleaktuell
End Sub
Private Sub frmspiel_show(sender As Object, e As EventArgs) Handles _
MyBase.Load
btnauswahl.Text = "Aktuelle Auswahl: " & Chr(13) & Chr(13) & _
pubvarmodul.welleaktuell
lbxspieletext.Items.Add(pubvarmodul.welleaktuell)
End Sub
Private Sub btnwellestart_Click(sender As Object, e As EventArgs) Handles _
btnwellestart.Click
'Was passiert bei welcher Welle:
Select Case pubvarmodul.welleaktuell
Case 1
gegnerstaerke = 10
gegnerdef = 1
gegnerhp = 10
wellenstart()
Case 2
gegnerstaerke = 10
gegnerdef = 2
gegnerhp = 20
wellenstart()
Case 3
gegnerstaerke = 12
gegnerdef = 2
gegnerhp = 30
wellenstart()
Case 4
gegnerstaerke = 12
gegnerdef = 3
gegnerhp = 40
wellenstart()
Case 5
gegnerstaerke = 15
gegnerdef = 3
gegnerhp = 50
wellenstart()
Case Else
End Select
End Sub
Private Sub btnauswahl_Click(sender As Object, e As EventArgs) Handles _
btnauswahl.Click
wellenauswahl.Show()
Me.Hide()
End Sub
End Class | |
Re: Button in Form 1 ändern wenn Form 2 geschlossen wird | | | Autor: Franki | Datum: 03.11.18 01:49 |
| Hallo,
Zitat: | |
recht wenig Zeit und kann mich daher nicht sehr in Themen wie
VB net oder VB6 vertiefen. Daher hoffe ich, dass ihr mir
einfach mit nem Code helfen könnt.
| |
na ja, wenn du etwas mit deiner Programmierung erreichen möchtest, bzw. dich einarbeiten möchtest, dann hilft dir ein fertiger Code relativ wenig selbst wenn er funktioniert.
Du möchtest Programmieren lernen, hast aber keine Zeit es zu lernen ?
Na ja, du kannst die Programmierung als Aufrag an eine Firma vergeben, das spart dir Zeit, kostet aber mehr oder weniger Geld. Entweder oder...
Wenig Zeit ist kein gutes Argument, selbst wemn man Programmierung als Hobby betreibt hilft es wenig sich nicht mit den elementaren Grundlagen zu beschäftigen.
Ob Hobby oder nicht, auch im Sport (auch Hobby) muss man sich die Grundlagen aneignen, das kostet Zeit und Ernergie, da führt kein Weg dran vorbei.
Du tust dir keinen Gefallen nach fertigen Lösungen zu fragen die zwar vordergündig funktionieren aber im Endeffekt nicht weiter helfen. Selbst wenn, dann hast du nach dem nächsten Änderungswunsch wieder das gleich Problem. Du bist nicht in der Lage deine eigene Software zu pflegen bzw. wieter zu entwickeln. Und danmit ist sie schon zum Scheitern verurteilt weil du auf Hilfe von aussen angewiesen bist und selbst nichts macheen kannst.
Gruß
Frank | |
Re: Button in Form 1 ändern wenn Form 2 geschlossen wird | | | Autor: Corai | Datum: 10.11.18 12:04 |
| Hallo Franki,
ich hätte hier ja lediglich einen Stups in die Richtung benötigt, um welchen Befehl es sich handelt. Den Rest hätte ich dann googlen können.
Wäre super, wenn ihr mir zumindest das geben könntet.
Ich verstehe, dass richtiges Programmieren länger dauert. Ich will ja nur ein Miniprogramm mit absoluten Basics machen.
Tut mir leid Leute falls das nicht geht, dann muss ich darauf verzichten. Schade hierfür
Wie gesagt durch Haushalt und Familie bleibt mir pro Woche(nende) gerade mal 1-2 Stunden, um mich damit oder mit etwas anderem zu befassen. Wenn es mit einem einfachen Befehl nicht machbar ist, dann breche ich hier mal ab oder probiere es mal mit einer Schleife, die alle 0,5 Sekunden den Button aktualisiert.
Trotzdem vielen Dank für die Antworten.
Viele Grüße Corai | |
Re: Button in Form 1 ändern wenn Form 2 geschlossen wird | | | Autor: Franki | Datum: 12.11.18 03:19 |
| Hallo,
ok, ich verstehe, du bist Anfänger und hast auch wenig Zeit, soweit so gut.
ABER: Wenn du von einem Minimalprogamm sprichst ist das schön und gut, aber die minimalen Grundlagen solltest du noch weiter reduzieren auf das absolute Minimum um dein Problem zu lösen.
Beispiel unter VB6, damit scheinst du dich ja aus zu kennen von früher.
Erstelle ein neues Projekt, alles Standard lassen.
In Form1 fügst du folgende Steuerelemente ein. Label1 und Command1
Als Code:
Private Sub Command1_Click()
Form2.Show
End Sub Erstelle über Projekt/Formular hinzufügen ein weteres Formular (Form2) dort fügst du ein Textfeld und eine Schaltfläche ein. Code dazu:
Private Sub Command1_Click()
Form1.Label1.Caption = Me.Text1.Text
Unload Me
End Sub Wenn du das Projekt startest erscheint Form1 du klickst auf die Schaltfläche, kannst eine Text in der Form2 eingeben und dort auf die Schaltfläche klicken. Form2 wird geschlossen, und in Form1 steht der eingegebene Text im Label.
Das ist mit geringst möglichem Aufwand programmiert, vielleicht hilft es dir ja bei deinem Problem. Auf solche Sachen sollte man Probleme reduzieren wenn man Anfänger ist. Und nicht gleich in einem komplexen Projekt auf Fehlersuche gehen. Und dein Projekt (Spiel) ist keineswegs anfängertauglich, da für die eigentliche Frage viel zu viel Code enthalten ist der zwar für das Spiel notwendig ist aber rein gar nichts mit dem eigentlichen Problem zu tun hat.
Ok, das war jetzt ein VBClassic Beispiel, du arbeitest mit NET, aber versuche mal es 1:1 umzusetzten. Ist sozusagen wie ein "Hallo Welt" Probramm was in jeder Programmierstprache / Scriptsprache gelerht wird...
Gruß
Frank | |
| 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 |
|
|
sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|