Springen naar inhoud


- - - - -
VS 2008 SOLVED

Aflopende Teller In Messagebox Tonen

Messagebox Teller

  • Log in a.u.b. om te beantwoorden
Er zijn 19 reacties in dit onderwerp

#1 MichaelDeBoey

MichaelDeBoey

    Junior Developer

  • Students
  • PipPip
  • 86 berichten
    Laatst bezocht 31 Mar 2013 10:04
  • LocatieSint-Niklaas

Geplaatst op 04 May 2012 - 19:26


Hallo iedereen,

ik zit met het volgende probleem:
Bij het aanmelden krijgt de gebruiker een melding als de gebruikersnaam en/of het wachtwoord verkeerd is ingegeven.
Gebeurd dit echter 3 keer, dan sluit de applicatie af.
Er zou dan ook een MessageBox getoond moeten worden waarin staat "u kan binnen 15 min opnieuw proberen"
en een second later "u kan binnen 14 min 59 sec opnieuw proberen" enzovoort...
Ik heb momenteel al dit qua code bij de test:
Visual Basic Code:
If aantSlechteAanmeldingen > 2 Then
	 MessageBox.Show("Uw gebruikersnaam en/of wachtwoord is 3 maal verkeerd ingegeven. Wacht " & CStr(wachttijd) & " minuten en probeer opnieuw.", "Maximum aantal aanmeldpogingen overschreden", MessageBoxButtons.OK, MessageBoxIcon.Error)
	 '--------------------------------------------
	 'TIMER MET COUNTDOWN VAN WACHTTIJD!
	 '--------------------------------------------
	 tmrWachttijd.Start()
End If
En dit bij de tick-event van de timer:
Visual Basic Code:
Private Sub tmrWachttijd_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrWachttijd.Tick
	 wachttijd -= 1
	 If wachttijd = 0 Then
		 tmrWachttijd.Stop()
		 MessageBox.Show("Uw gebruikersnaam en/of wachtwoord is 3 maal verkeerd ingegeven. Wacht " & CStr(wachttijd) & " minuten en probeer opnieuw.", "Maximum aantal aanmeldpogingen overschreden", MessageBoxButtons.OK, MessageBoxIcon.Error)
		 SluitApplicatie()
	 End If
	 '--------------------------------------------
	 'ENKEL TEKST VAN MESSAGEBOX VERANDEREN EN NIET TELKENS OPNIEUW EEN MESSAGEBOX TONEN!
	 MessageBox.Show("Uw gebruikersnaam en/of wachtwoord is 3 maal verkeerd ingegeven. Wacht " & CStr(wachttijd) & " minuten en probeer opnieuw.", "Maximum aantal aanmeldpogingen overschreden", MessageBoxButtons.OK, MessageBoxIcon.Error)
	 '--------------------------------------------
End Sub
Maar hierbij toont hij elke second een nieuwe MessageBox.
Dat is niet de bedoeling.
Het is de bedoeling gewoon de tekst van de MessageBox te veranderen.
Kan er iemand mij aub helpen?
Alvast bedankt!
Met vriendelijke groeten,

Michaël De Boey

Huisregels - VS 2011 Beta - VS 2010 Express - Keybinding Posters - Tutorials - Code Tags gebruiken


#2 pluto

pluto

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 510 berichten
    Laatst bezocht 21 May 2013 17:39

Geplaatst op 04 May 2012 - 20:05

Mijn eerst gedacht is, ik denk dat je beter zelf  een messagebox zou maken met een klein formuliertje daar ben je meer baas over.

groetjes Pluto

#3 MichaelDeBoey

MichaelDeBoey

    Junior Developer

  • Students
  • PipPip
  • 86 berichten
    Laatst bezocht 31 Mar 2013 10:04
  • LocatieSint-Niklaas

Geplaatst op 04 May 2012 - 20:32

Ja ik weet dat ik zelf een modaal formuliertje kan maken, maar dan moet ik weer een extra formuliertje in de designer maken en dat is dan weer niet de bedoeling...
Mijn leerkracht programmeren wil niet helpen.
Ze zegt dat ik het online zou moeten vinden hoe dat moet (kwestie dat ik zelf leer opzoeken he ;-) ), maar ik heb mij ook al suf gezocht en hier op het forum ook maar vind nix :S
Met vriendelijke groeten,

Michaël De Boey

Huisregels - VS 2011 Beta - VS 2010 Express - Keybinding Posters - Tutorials - Code Tags gebruiken


#4 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 3684 berichten
    Laatst bezocht vandaag, 17:13
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 04 May 2012 - 23:24

Ben je verplicht de aantal tijd resterend te tonen?
Anders zou je het hiermee kunnen doen.:
Visual Basic Code:
MsgBox(4096, "Test", "Dit bericht verdwijnd in 5 seconden", 5)

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***


#5 MichaelDeBoey

MichaelDeBoey

    Junior Developer

  • Students
  • PipPip
  • 86 berichten
    Laatst bezocht 31 Mar 2013 10:04
  • LocatieSint-Niklaas

Geplaatst op 04 May 2012 - 23:51

Bericht bekijkenpascalbianca, op 04 May 2012 - 23:24, zei:

Ben je verplicht de aantal tijd resterend te tonen?
Ja het is echt de bedoeling om per second de tekst uit de MessageBox te vernieuwen.
Jouw oplossing is een goede oplossing, maar niet wat ik zoek.
Toch al bedankt voor de moeite!
Met vriendelijke groeten,

Michaël De Boey

Huisregels - VS 2011 Beta - VS 2010 Express - Keybinding Posters - Tutorials - Code Tags gebruiken


#6 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 3684 berichten
    Laatst bezocht vandaag, 17:13
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 05 May 2012 - 00:45

Ik denk niet dat het op een normale manier gaat lukken wat jij wilt.
Wel via een omweg als je zelf een messagebox gaat maken, dus in principe een custom messagebox.
Maarrrrrrrrrrrrrrrrrrrr ................... we hebben hier een Tovenaar in ons midden die zijn naam begint met een V... en die zou er wel iets op kunnen vinden als hij betijds de post zou lezen :)

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***


#7 pluto

pluto

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 510 berichten
    Laatst bezocht 21 May 2013 17:39

Geplaatst op 05 May 2012 - 08:48

Ik denk het zelfde als Pascal, ik weet dat een custom control maken niet simpel is. Als je geen formuliertje mag gebruiken. Dan zou ik met de GDI mijn messagebox maken. Ja de GDI is ook nog een studie op zich zelf, ik heb eens een analoge klok gemaakt met de GDI pfffffffffffffffffffff. Die kan je hier ook nog terug vinden.

Groetjes Pluto

#8 DieterVB

DieterVB

    Professional Developer

  • Leden
  • PipPipPipPip
  • 340 berichten
    Laatst bezocht 08 Apr 2013 14:49
  • LocatieVlaamse Ardennen

Geplaatst op 06 May 2012 - 13:45

Denk ook dat het best is om je eigen MessageBox te maken.
maar in een tijd als tegenwoordig is alles natuurlijk mogelijk :) .

Heb deze code even ineengestoken(werkt enkel bij een x86 applicatie) :

Code:
Imports System.Runtime.InteropServices
Public Class Form1
	Dim wachttijd As Integer = 20
	Dim Msg As New MessageBoxAdv()
	Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
		Msg.Show("Uw gebruikersnaam en/of wachtwoord is 3 maal verkeerd ingegeven. Wacht " & CStr(wachttijd) & " seconden en probeer opnieuw.", "Maximum aantal aanmeldpogingen overschreden", MsgBoxStyle.Critical)
	End Sub
	Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
		If wachttijd > 0 Then wachttijd -= 1 Else Msg.Close()
		Msg.Text = "Uw gebruikersnaam en/of wachtwoord is 3 maal verkeerd ingegeven. Wacht " & CStr(wachttijd) & " seconden en probeer opnieuw."
	End Sub
End Class
Public Class MessageBoxAdv
	<DllImport("user32.dll", EntryPoint:="FindWindow", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function FindWindowByCaption(ByVal zero As IntPtr, ByVal lpWindowName As String) As IntPtr
	End Function
	<DllImport("user32.dll")> Private Shared Function SetDlgItemText(hDlg As IntPtr, nIDDlgItem As Integer, lpString As String) As Boolean
	End Function
	<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
	Private Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Boolean
	End Function
	Private Declare Auto Function SetWindowText Lib "user32" (ByVal hWnd As IntPtr, ByVal lpstring As String) As Boolean
	Private Text_ As String = "", Title_ As String = "", Style_ As MsgBoxStyle = MsgBoxStyle.DefaultButton1, Ptr As IntPtr
	Public Function Show(ByVal Text As String, Optional ByVal Title As String = "", Optional ByVal Style As MsgBoxStyle = MsgBoxStyle.DefaultButton1) As MsgBoxResult
		Me.Text_ = Text : Me.Title_ = Title : Me.Style_ = Style
		Dim Thread_ As New Threading.Thread(
			Sub()
				While Ptr = Nothing
					Ptr = FindWindowByCaption(IntPtr.Zero, "‡") 'Zoekt de pointer aan de hand van de title. Om geen forms te hebben met dezelfde title gebruiken we een speciaal karakter.
					SetWindowText(Ptr, Me.Title_) 'Geeft de MessageBox een juiste naam via de pointer die we daarjuist verkregen hebben.
				End While
			End Sub)
		Thread_.Start()
		Return MsgBox(Me.Text_, Me.Style_, "‡")
	End Function
	Public Sub Close()
		While Ptr = Nothing : End While
		PostMessage(Ptr, &H10, 0, 0)
	End Sub
	Public Property Text As String
		Get
			Return Me.Text_
		End Get
		Set(value As String)
			While Ptr = Nothing : End While
			Me.Text_ = value
			SetDlgItemText(Ptr, &HFFFF, value) 'Wijzigt de text in de MessageBox. Hou er rekening mee dat de form zijn grootte niet meer wijzigt afhankelijk van de text grootte.
		End Set
	End Property
	Private Property Title As String
		Get
			Return Me.Title_
		End Get
		Set(value As String)
			While Ptr = Nothing : End While
			Me.Title_ = value
			SetWindowText(Ptr, value) 'Wijzigt de title van de MessageBox.
		End Set
	End Property
End Class


De code maakt gebruik van een gewone MsgBox en wijzigt de gegevens via de pointer van die MsgBox.

Groeten Dieter

#9 MichaelDeBoey

MichaelDeBoey

    Junior Developer

  • Students
  • PipPip
  • 86 berichten
    Laatst bezocht 31 Mar 2013 10:04
  • LocatieSint-Niklaas

Geplaatst op 10 May 2012 - 19:11

Het is niet echt de bedoeling dat het zo moeilijk is.
Mijn leerkracht programmeren zegt zelf dat ik het zelf zou moeten kunnen en het vrij simpel is...
Deze manier is dus niet de manier die ik zoek.
Zijn er soms nog manieren?
Alvast bedankt!
Met vriendelijke groeten,

Michaël De Boey

Huisregels - VS 2011 Beta - VS 2010 Express - Keybinding Posters - Tutorials - Code Tags gebruiken


#10 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3294 berichten
    Laatst bezocht vandaag, 09:45
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 11 May 2012 - 09:26

Denk dat de code van Dieter al vrij goed in de buurt komt hetgeen je wilt hebben.

Ik zou zelf niet dadelijk een andere manier weten ... heb zelf zitten zoeken en buiten de 2 vermelde voorstellen heb ik niets anders gevonden.
Ben benieuwd naar de "vrij simpele" oplossing van je leerkracht ;)

Hou ons op de hoogte zou ik zeggen !

*** If you like youre solution or appriciate the crew's effort, please click on the facebook like or the Google +1 button ***

 

- Any fool can know, the point is to understand -


email : RedThread@vbib.be | MSN : Red_Thread@Hotmail.com

Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


#11 Hypenate

Hypenate

    Guru Developer

  • Moderators
  • 1078 berichten
    Laatst bezocht vandaag, 18:41
  • LocatieSint-Truiden
Inzender

Geplaatst op 11 May 2012 - 21:52

Kan je dat niet inherenten? die eigenschappen?
Ofzo :)
1. Lees zeker onze huisregels en gebruik code-tags indien nodig
2. Indien je vraag correct beantwoord is, gelieve dit te melden in de post
-
3. We zijn allemaal vrijwilligers, keep it cool

#12 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 3684 berichten
    Laatst bezocht vandaag, 17:13
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 11 May 2012 - 22:40

Hier toevallig even een klein voorbeeld hoe het zou kunnen zijn met een zelf gemaakte messagbox die aftelt.
Bijlage  Voorbeeld.rar   20.1K   7 downloads

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***


#13 pluto

pluto

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 510 berichten
    Laatst bezocht 21 May 2013 17:39

Geplaatst op 12 May 2012 - 12:12

Ik ben ook benieuwd naar de oplossing. Voor het simpel te houden,kan ik maar enkel denken aan een formuliertje die je bij maakt.

Groetjes Pluto

#14 DieterVB

DieterVB

    Professional Developer

  • Leden
  • PipPipPipPip
  • 340 berichten
    Laatst bezocht 08 Apr 2013 14:49
  • LocatieVlaamse Ardennen

Geplaatst op 12 May 2012 - 12:25

Ja, ik ben ook heel benieuwd. Een form bijmaken, zoals Pluto zegt, lijkt me inderdaad de meest voor hand liggende oplossing. :)
Heb geprobeerd een inherit toe te passen op de MessageBox class maar dat blijkt niet mogelijk te zijn.

#15 doebi

doebi

    Professional Developer

  • Leden
  • PipPipPipPip
  • 497 berichten
    Laatst bezocht 08 Mar 2013 01:23

Geplaatst op 20 May 2012 - 21:50

Als het toch echt via de "messagebox" zelf MOET gaan zou ik zeggen,
de classe messagebox overerven in een eigen classe , een timer activeren bij de sub show, elke seconde van de paint de title wijzigen en daarna elke seconde ne paint uitvoeren. Of dit al dan niet eenvoudig kan weet ik niet , zelf niet geprobeerd , is gewoon ne kleine brainstorm e.
Als dit echt eenvoudiger zou zijn dan DieterVB z'n voorbeeld weet ik niet maar het leunt dan wel dichter aan bij je vraag.
Verwacht het onverwachte

#16 doebi

doebi

    Professional Developer

  • Leden
  • PipPipPipPip
  • 497 berichten
    Laatst bezocht 08 Mar 2013 01:23

Geplaatst op 20 May 2012 - 22:14

Toch efkes verder gezocht, denk dat dit precies is wat je wil bereiken.

http://msdn.microsof...e/cc188920.aspx

Uiteraard aan te passen aan uw specifieke behoefte

Grtz
Verwacht het onverwachte

#17 Vozzie

Vozzie

    Moderator

  • Moderators
  • 1852 berichten
    Laatst bezocht vandaag, 09:40
Inzender

Geplaatst op 21 May 2012 - 10:27

Hallo,

Visual Basic Code:
Sub CountDownMessageBox()
	Dim stopWatch As Stopwatch = stopWatch.StartNew()
	Dim totalTime As TimeSpan = TimeSpan.FromSeconds(15)
	Using timer As New Timer()
		Using button As New Button()
			Using label As New Label()
				Using form As New Form()

					form.Text = "TITLE"

					label.Bounds = New Rectangle(15, 15, form.ClientSize.Width - 30, form.ClientSize.Height - (60 + button.Height))
					label.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or AnchorStyles.Right Or AnchorStyles.Bottom
					form.Controls.Add(label)

					button.Left = CInt((form.ClientSize.Width / 2) - (button.Width / 2))
					button.Top = form.ClientSize.Height - (button.Height + 15)
					button.Enabled = False
					button.Text = "OK"
					form.Controls.Add(button)

					timer.Interval = 999
					AddHandler timer.Tick, Sub(sender As Object, e As EventArgs)
											   Dim result As TimeSpan = totalTime - stopWatch.Elapsed
											   If result.TotalMilliseconds > 0 Then
												   label.Text = "bla bla bla " & vbCrLf & vbCrLf & "U moet nog " & result.ToString() & " wachten."
											   Else
												   label.Text = "U kan doorgaan"
												   button.Enabled = True
											   End If
										   End Sub
					AddHandler form.Load, Sub(sender As Object, e As EventArgs)
											  timer.Enabled = True
										  End Sub
					form.ShowDialog()
				End Using
			End Using
		End Using
	End Using
End Sub

Groetjes

Stappen, keuzes en herhaling combineren is programmeren.
Explicit, Strict and don't Infer

#18 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3294 berichten
    Laatst bezocht vandaag, 09:45
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 21 May 2012 - 10:32

Bericht bekijkenVozzie, op 21 May 2012 - 10:27, zei:

Hallo,

Visual Basic Code:
Sub CountDownMessageBox()
	Dim stopWatch As Stopwatch = stopWatch.StartNew()
	Dim totalTime As TimeSpan = TimeSpan.FromSeconds(15)
	Using timer As New Timer()
		Using button As New Button()
			Using label As New Label()
				Using form As New Form()

					form.Text = "TITLE"

					label.Bounds = New Rectangle(15, 15, form.ClientSize.Width - 30, form.ClientSize.Height - (60 + button.Height))
					label.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or AnchorStyles.Right Or AnchorStyles.Bottom
					form.Controls.Add(label)

					button.Left = CInt((form.ClientSize.Width / 2) - (button.Width / 2))
					button.Top = form.ClientSize.Height - (button.Height + 15)
					button.Enabled = False
					button.Text = "OK"
					form.Controls.Add(button)

					timer.Interval = 999
					AddHandler timer.Tick, Sub(sender As Object, e As EventArgs)
											   Dim result As TimeSpan = totalTime - stopWatch.Elapsed
											   If result.TotalMilliseconds > 0 Then
												   label.Text = "bla bla bla " & vbCrLf & vbCrLf & "U moet nog " & result.ToString() & " wachten."
											   Else
												   label.Text = "U kan doorgaan"
												   button.Enabled = True
											   End If
										   End Sub
					AddHandler form.Load, Sub(sender As Object, e As EventArgs)
											  timer.Enabled = True
										  End Sub
					form.ShowDialog()
				End Using
			End Using
		End Using
	End Using
End Sub

Groetjes

Lol, zoals Pascal al zei. Als er één iemand is... thx Vozzie !!

*** If you like youre solution or appriciate the crew's effort, please click on the facebook like or the Google +1 button ***

 

- Any fool can know, the point is to understand -


email : RedThread@vbib.be | MSN : Red_Thread@Hotmail.com

Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


#19 pluto

pluto

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 510 berichten
    Laatst bezocht 21 May 2013 17:39

Geplaatst op 31 August 2012 - 14:13

Ik ben nog altijd benieuwd naar de oplossing van je school.

Groetjes Pluto

#20 MichaelDeBoey

MichaelDeBoey

    Junior Developer

  • Students
  • PipPip
  • 86 berichten
    Laatst bezocht 31 Mar 2013 10:04
  • LocatieSint-Niklaas

Geplaatst op 13 September 2012 - 22:58

Sorry voor de late reactie, maar ik had niet meer op dit topic gelet...
We hebben deze feature uiteindelijk weggelaten, om wat meer tijd in het verbeteren van andere dingen te kunnen stoppen.
Toch allemaal hartelijk bedankt voor de hulp!
Met vriendelijke groeten,

Michaël De Boey

Huisregels - VS 2011 Beta - VS 2010 Express - Keybinding Posters - Tutorials - Code Tags gebruiken






Ook met taq VS 2008 SOLVED, Messagebox, Teller voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2008 SOLVED] Untitled 1

Hosting provided by Combell
Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
vbib.be - vbnet.be - vbdotnet.be - visualbasic.be