Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - AIUTO >>> Intercettare Nuovo-Apri-Salva <<< AIUTO
Forum - C# / VB.NET - AIUTO >>> Intercettare Nuovo-Apri-Salva <<< AIUTO

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
giovannibart91 (Member)
Pro


Messaggi: 64
Iscritto: 30/05/2008

Segnala al moderatore
Postato alle 17:53
Martedì, 15/05/2007
Questo topic è stato chiuso dal moderatore

Cerco aiuto di media priorità per chiunque sappia intercettare tutti i possibili eventi che si generano ad esempio nel blocco note (o comunque nel più semplice editor di testo che esista) quando facciamo "Nuovo", "Apri", "Salva" o "Salva con nome".

Proprio non capisco come ci si riesca con meno delle mie 454 righe di codice (contate!). :d :-?

Ad esempio: io ho aperto con il blocco note un file, dopo averlo modificato devo ovviamente chiedere all'utente se apportare le modifiche effettuate a quel file, e se l'utente sceglie "no, allora devo fargli aprire la finestra di dialogo per aprire un file, se invece sceglie "Sì", allora devo salvare il file e mostrare la finestra "Apri", se invece sceglie "Annulla" devo tenere tutto così com'è... Se però nella finestra "Apri file" l'utente sceglie "Annulla", allora devo mantenere il testo del file precedente e annullare l'operazione... insomma, roba da andare fuori di testa!! E proprio non riesco a capire come il blocco note riesca a starci in solo 68 kilobyte e mezzo! :grr::grr::grr:

Come detto all'inizio ringrazio infinitamente se qualcuno mi riuscisse a dare indicazioni su come "comprimere" il più possibile la gestione degli eventi... Grazie anticipatamente... 8-|

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:33
Martedì, 15/05/2007
Da quello che ho capito tu vorresti intercettare eventi da un programma esterno, nella fattispecie il notepad... ma, dopotutto, che bisogno ci sarebbe di farlo per far ripetere le stesse operazioni che fa lui? O forse volevi solo sapere come creare una interfaccia simile a quella del blocco note, con un DropDownMenu, dato che la gestione degli eventi appartiene al tuo programma?
Ma perchè non mettete un po' di chiarezza in queste domande? :d

Comunque, se si tratta della seconda, questo è un buon risultato:
http://www.pierotofy.it/pages/guide/Guida_al_Visual_Basic_ ...
Dovrebbe starci tutto in non più di 30 righe.

Ultima modifica effettuata da Il Totem il 15/05/2007 alle 18:40
PM
Avatar
giovannibart91 (Member)
Pro


Messaggi: 64
Iscritto: 30/05/2008

Segnala al moderatore
Postato alle 20:07
Mercoledì, 16/05/2007
Scusa se non sono stato molto chiaro...

Comunque il mio problema è creare appunto un'interfaccia simile al notepad con tutti i relativi eventi del dropdownmenu, è solo che sono talmente tanti gli eventi che sono riuscito a gestirli tutti, ma mi stanno in 454 righe di codice (un'infinità!!). Specifico che gli eventi del dropdownmenu sono tutti quelli della voce "File" e sembrano pochi, ma in realtà sotto c'è tutta una rete di specifici eventi (ad esempio, io clicco sulla voce "File->Apri", però se il testo nella textbox è stato modificato devo chiedere all'utente se salvar le modifiche, mostrare la finestra di dialogo "Apri" e se l'utente decide di cliccare su "Annulla" non devo apportare nessuna modifica...), UNA VERA CONFUSIONE!

Quindi volevo chiedere se è possibile gestire questi eventi in un modo migliore e soprattutto in meno righe di codice!

Comunque grazie per aver letto il mio post. :D

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:23
Venerdì, 18/05/2007
Ora ho capito... in questo momento non ho tempo, te lo scriverò successivamente, ma ti suggerisco di usare una variabile booleana per controllare la modifca del testo.

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:42
Martedì, 22/05/2007
Codice sorgente - presumibilmente VB.NET

  1. Dim Modificato As Boolean = False
  2.     Dim SavePath As String = Nothing
  3.     Public Sub Save(ByVal Ask As Boolean)
  4.         Dim S As New SaveFileDialog
  5.         If Ask = False OrElse MsgBox("Salvare modifiche?", MsgBoxStyle.Question + vbYesNo) = MsgBoxResult.Yes Then
  6.             If S.ShowDialog = Windows.Forms.DialogResult.OK Then
  7.                 Dim W As New IO.StreamWriter(S.FileName)
  8.                 W.Write(TextBox1.Text)
  9.                 W.Close()
  10.                 SavePath = S.FileName
  11.             End If
  12.         End If
  13.     End Sub
  14.     Private Sub NuovoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NuovoToolStripMenuItem.Click
  15.         If Modificato Then
  16.             Save(True)
  17.         End If
  18.         SavePath = Nothing
  19.         TextBox1.Text = ""
  20.     End Sub
  21.     Private Sub ApriToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ApriToolStripMenuItem.Click
  22.         If Modificato Then
  23.             Save(True)
  24.         End If
  25.         SavePath = Nothing
  26.         Dim O As New OpenFileDialog
  27.         If O.ShowDialog = Windows.Forms.DialogResult.OK Then
  28.             Dim R As New IO.StreamReader(O.FileName)
  29.             TextBox1.Text = R.ReadToEnd
  30.             R.Close()
  31.         End If
  32.     End Sub
  33.     Private Sub SalvaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalvaToolStripMenuItem.Click
  34.         If SavePath <> Nothing Then
  35.             Dim W As New IO.StreamWriter(SavePath)
  36.             W.Write(TextBox1.Text)
  37.             W.Close()
  38.         Else
  39.             Save(False)
  40.         End If
  41.     End Sub
  42.     Private Sub SalvaConNomeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalvaConNomeToolStripMenuItem.Click
  43.         Save(False)
  44.     End Sub
  45.     Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
  46.         Modificato = True
  47.     End Sub


47 righe.
Il Menu a discesa è costituito da un elemento MenuStrip, con quattro elementi nella lista: Nuovo, Apri, Salva e Salva con nome. Mi sembra che funzioni in tutti i casi, è questo che cercavi?

PM
Avatar
giovannibart91 (Member)
Pro


Messaggi: 64
Iscritto: 30/05/2008

Segnala al moderatore
Postato alle 22:49
Martedì, 22/05/2007
Sì, anche se non è stato intercettato l'evento per quando si chiudeva il form è tutto perfetto, grazie mille! :k: :D

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:03
Mercoledì, 23/05/2007
Dettagli! :D

Comunque io sto sempre aspettando che Piero faccia quello script per mantenere l'indentazione dei tag Code: così il sorgente è orribile :rotfl:.

PM
Avatar
giovannibart91 (Member)
Pro


Messaggi: 64
Iscritto: 30/05/2008

Segnala al moderatore
Postato alle 18:04
Mercoledì, 23/05/2007
Sì, ma per l'IDE l'indentazione c'è e quindi basta incollare che tutto si mette a posto. :k:
E poi non pensi che se ci sono troppe indentazioni dopo non si legge più niente perchè quello che va oltre la pagina va a capo? :-? :-| dopo si leggerà tutto peggio di prima...

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:31
Venerdì, 25/05/2007
Basta non mettere la tabulazione ma due spazi, e peggio di così non può andare. Beh, visto che stiamo andando :ot:, se non hai niente altro da chiedere chiudo il topic.

PM
Pagine: [ 1 2 ] Precedente | Prossimo