Jump to content
Xtreme .Net Talk

Recommended Posts

Posted

hey.

i'm making a very basic contacts type program, and one of the fetures is that when the user closes the form it checks is any information has not been saved. but for some reason once i placed this sub in it now doesn't close at all

 

Private Sub FormClosing() Handles Me.FormClosing
       Dim IsDiffrent As Boolean = True
       For Counter As Byte = 0 To COM_Name.Items.Count - 1
           If COM_Name.Text = COM_Name.Items.Item(Counter) Then
               Dim Information(0 To 7) As String
               Dim TxtReader As New StreamReader(My.Application.Info.DirectoryPath & "\" & COM_Name.Text & ".txt")
               For InfoCounter As Byte = 0 To 7
                   Information(InfoCounter) = TxtReader.ReadLine
               Next
               TxtReader.Close()
               If Information(0) = TXT_HomePhone.Text And _
                   Information(1) = TXT_MobPhone.Text And _
                   Information(2) = DTP_Birthday.Value And _
                   Information(3) = TXT_HomeAddress.Lines(1) And _
                   Information(4) = TXT_HomeAddress.Lines(2) And _
                   Information(5) = TXT_HomeAddress.Lines(3) And _
                   Information(6) = TXT_HomeAddress.Lines(4) And _
                   Information(7) = TXT_Email.Text Then
                   IsDiffrent = False
               End If
           End If
       Next

       If IsDiffrent = True Then
           Dim Answer As Byte = MsgBox("Do you wish to Save Changes?", MsgBoxStyle.YesNo)
           If Answer = 6 Then
               Call Save(True, "Closing")
           End If
       Else
           Me.Close()
       End If
   End Sub

 

(please note that it is not even getting to the save changes msgbox)

  • Leaders
Posted

(please note that it is not even getting to the save changes msgbox)

 

So, if you step through with the debugger, where does it get to? I don't see an obvious reason that the form is not closing, but I did notice this:

 

       If IsDiffrent = True Then
           Dim Answer As Byte = MsgBox("Do you wish to Save Changes?", MsgBoxStyle.YesNo)
           If Answer = 6 Then
               Call Save(True, "Closing")
           End If
       Else
           Me.Close()
       End If

 

This code seems odd for a FormClosing event handler. You shouldn't be calling Close in the FormClosing event handler; you're already closing (in fact, something bad happened when I called Me.Close in the FormClosing handler). If you want to let the form close, do nothing. If you want to prevent the form from closing, set e.Cancel to true. In order to get access to 'e', you need to use the complete event signature for your handler, but it doesn't look like you actually intend to prevent the form from closing.

 

' change
Private Sub FormClosing() Handles Me.FormClosing
' to
Private Sub FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Handles Me.FormClosing

 

The best suggestion I can offer is to use the debugger. Step through the code and find out what it's doing that it shouldn't be doing.

 

On an unrelated note, why code like this:

Dim Answer As Byte = MsgBox("Do you wish to Save Changes?", MsgBoxStyle.YesNo)
If Answer = 6 Then

when you can code like this?

Dim Answer As MsgBoxResult = MsgBox("Do you wish to Save Changes?", MsgBoxStyle.YesNo)
If Answer = MsgBoxResult.Yes Then

That code tells me you aren't using Option Strict. I would very, very strongly advise you to use Option Strict. It might seem a bit inconvenient until you get used to it, but Option Strict is a good thing.

[sIGPIC]e[/sIGPIC]

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...