Gå til innhold

Anbefalte innlegg

Skrevet

Hei

 

Jeg lager et editerings program. Jeg prøver å få programmet til å sjekke ved avslutt(Form1.Closing) om teksten i richtextbox1 er lik teksten den leste inn ved åpning av tekstfila og dersom den ikke er det, åpne form2 og stenge programmet hvis den er lik.

 

Jeg ser at programmet viser form2 et bittelite sekund før den lukker hele applikasjonen. Under er koden jeg bruker. Kan noen forklare meg hvorfor den ikke viser form2?

 

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
	If RichTextBox1.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName) Then
		Application.Exit()
	Else
		Form2.Show()
	End If
End Sub

Videoannonse
Annonse
Skrevet

Fordi det er Form1 som ligger i Application.Run(new Form1()); i program.vb'en din, eller noe slikt. Når Form1 da er ferdig med å kjøre, så regnes programmet som avsluttet.

Skrevet

Du kan for eksempel gjøre det ved å skrive e.Cancel=true før du viser form2, eller du kan velge i prosjektegenskapene at prosjektet ikke skal avsluttes før alle formene er lukket.

 

Mvh

Degeim

Skrevet

Hvis jeg skriver e.Cancel = True og form2.show(), så får jeg ikke lukket form2 når jeg bruker kommandoen application.exit().

Hvis jeg setter i prosjektegenskapene at shutdown mode = når siste form lukker, så lukker form1 seg når form2 åpner seg.

 

Hmm.....

Skrevet

Er form2 en "Vil du lagre endringene?"-dialog? I såfall kan du jo gjøre dette i Form1.Closing():

 

-Sjekke om filen er endret

-Hvis ja, kjør en MessageBox.Show("Vil du lagre bla bla bla) og sjekk DialogResult.

-Dersom DialogResult = OK, lagre fil og deretter avslutt. Dersom noe annet enn OK, avslutt uten å lagre.

Skrevet

Ja, form2 er en 'vil du lagre nå før avslutt' form. Prøvde med msgbox og msgboxresult men den lagrer dokumentet ved avslutt samma om jeg velger OK eller Avbryt

 

Her er koden jeg bruker:

 

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
	If RichTextBox1.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName) Then
		Application.Exit()
	Else
		MsgBox("Do you want to save before exit?", MsgBoxStyle.OkCancel, "Save before exit")
		If MsgBoxResult.Ok Then
			My.Computer.FileSystem.WriteAllText(OpenFileDialog1.FileName, RichTextBox1.Text, False)
			Application.Exit()
		ElseIf MsgBoxResult.Cancel Then
			Application.Exit()
		End If
	End If
End Sub

Skrevet (endret)

Tror jeg ser problemet. Du lagrer jo ikke verdien fra MessageBox'en.

 

If MsgBox("Do you want to save before exit?", MsgBoxStyle.OkCancel, "Save before exit") Equals MsgBoxResult.Ok Then

...Save

End If

 

...Exit app

Endret av Spartakus

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...