miXer Skrevet 7. januar 2008 Skrevet 7. januar 2008 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
Manfred Skrevet 7. januar 2008 Skrevet 7. januar 2008 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.
Degeim Skrevet 7. januar 2008 Skrevet 7. januar 2008 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
miXer Skrevet 7. januar 2008 Forfatter Skrevet 7. januar 2008 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.....
Spartakus Skrevet 8. januar 2008 Skrevet 8. januar 2008 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.
miXer Skrevet 8. januar 2008 Forfatter Skrevet 8. januar 2008 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
Spartakus Skrevet 8. januar 2008 Skrevet 8. januar 2008 (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 8. januar 2008 av Spartakus
miXer Skrevet 8. januar 2008 Forfatter Skrevet 8. januar 2008 Det er sant. At jeg ikke tenkte på det selv.. Nå fungerer programmet slik jeg vil! :!:
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå