vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Suche Visual-Basic Code
Button 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel