Toon posts:

[VB.NET] variabele van een sub naar een andere sub

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een formulier, waar al de klanten uit een database getoond worden. Ik heb ook een menu. Als ik in dat menu op 'Mail' klik opent er een nieuw formulier, waar je dan een mail naar die bepaalde klant kan sturen.

Als er dus op Mail wordt geklikt bij een bepaalde klant, zit er deze code achter (ik zal alleen het nodige laten zien):


code:
1
2
3
4
5
6
7
8
9
Dim mailing As String = klant.klantmail

If fMail.Visible = False Then
                fMail = New frmMail
                fMail.Show()
                fMail.Text = "E-mail naar: " & mailing
                frmMail.infoverzamelen(mailing)
            Else
                fMail.Focus()


Dat werkt, hij opent een nieuwe formulier die als titel krijg 'E-Mail naar: klant zijn mail adres uit database'. Maar nu moeten die gegevens dus ook mee naar dat volgend formulier (frmMail) zodat de code uit dat formulier weet naar waar hij de mail moet verzenden. Achter dat formulier zit deze code:

code:
1
2
3
4
   Public Sub infoverzamelen(ByVal info As String)
        mailing = info
        MessageBox.Show(mailing)
    End Sub


En jawel, hij laat mooi het email adres zien van die klant van het vorige formulier, tot dusver alles goed! Als ik in die frmMail op de knop 'verzenden' duw, heb ik deze code:

code:
1
2
3
4
5
6
7
    Public Sub btnVerzenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerzenden.Click

        Dim message As New MailMessage("from@test.com", "to@test.com", "subject of the Message ", "body fo the message ")
        Dim emailClient As New SmtpClient("smtpserver")
        emailClient.Send(message)

    End Sub


De code om de mail te versturen werkt, maar ipv 'to@test.com' wil ik natuurlijk de mail van de klant, dus eigenlijk van de sub daarboven, van Public Sub infoverzamelen(ByVal info As String). Nu heb ik me al plat gezocht achter een mogelijk om die waarde 'mailing' van de public sub infoverzamelen te versturen naar de public sub btnverzenden. Heb al geprobeerd met Classes aan te maken en dan inherits, maar dat werkt niet. Ook heb ik google al afgezocht maar ik kom altijd uit op functie aanroepen met parameters, maar bij die public sub btnverzenden kan ik helaas geen parameters meer bijvoegen.

Acties:
  • 0 Henk 'm!

  • Gimmeabrake
  • Registratie: December 2008
  • Laatst online: 23-09 23:31
Als je nou in de frmMail een public variable zet waar je het e-mailadres in op kan slaan, ben je toch al klaar?

Visual Basic .NET: frmMail
1
Public ToAddress As String
Visual Basic .NET: frmKlant
1
2
3
4
5
6
7
8
9
Dim mailing As String = klant.klantmail
If fMail.Visible = False Then
   fMail = New frmMail
   fMail.ToAddress = mailing
   fMail.Text = "E-mail naar: " & mailing
   fMail.Show()
   frmMail.infoverzamelen(mailing)
Else
   fMail.Focus()
Visual Basic .NET: frmKlant
1
2
3
4
5
Public Sub btnVerzenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerzenden.Click
   Dim message As New MailMessage("from@test.com",ToAddress, "subject of the Message ", "body fo the message ")
   Dim emailClient As New SmtpClient("smtpserver")
   emailClient.Send(message)
End Sub

Acties:
  • 0 Henk 'm!

  • Kentsfield
  • Registratie: November 2007
  • Laatst online: 11-01-2023
Ik zou voor de overzichtelijkheid je business logic scheiden van je formulieren, dus de methodes waarmee je mail verstuurt in een soort van controller klasse uitschrijven. Eventueel zou je dan ook meteen een klasse klant aan kunnen maken van waaruit je klant gegevens beschikbaar stelt. Denk dat dit zeker op de lange termijn de leesbaarheid van je code ten goede komt.

Dingen!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@Gerrymeistah: Dat had ik al reeds geprobeerd, maar had 'fMail.ToAddress = mailing ' niet toegevoegd aan frmKlant, ik dacht dat het genoeg was om 'frmMail.infoverzamelen(mailing)' te schrijven. Ik zal het even proberen!

Acties:
  • 0 Henk 'm!

  • Gimmeabrake
  • Registratie: December 2008
  • Laatst online: 23-09 23:31
Kentsfield schreef op maandag 29 december 2008 @ 09:58:
Ik zou voor de overzichtelijkheid je business logic scheiden van je formulieren, dus de methodes waarmee je mail verstuurt in een soort van controller klasse uitschrijven. Eventueel zou je dan ook meteen een klasse klant aan kunnen maken van waaruit je klant gegevens beschikbaar stelt. Denk dat dit zeker op de lange termijn de leesbaarheid van je code ten goede komt.
Hier sluit ik mij trouwens bij aan, het is altijd beter om dit soort dingen in aparte klasses af te handelen. Zoals Kentsfield al zegt zal dat de leesbaarheid van je code ten goede komen naar mate je programma groeit.

[ Voor 0% gewijzigd door Gimmeabrake op 29-12-2008 15:25 . Reden: typo ]