Newsgroup: it.comp.lang.visual-basic
Titolo: [.net] chiudere automaticamente un msgbox

Salve a tutti, mi chaimo Alex e avrei un piccolo problemino...
Dovrei fare in modo che un msgbox si chiuda automaticamente, ad esempio
dopo un periodo di tempo o dopo la generazione di un evento.
Ringrazio fin d'ora chi mi saprà rispondere.
Ciao!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 esempio dopo un periodo di tempo o dopo la generazione di un evento.
Direi che più che un messagebox (il sostituto di msgbox per .net), ceh
blocca l'esecuzione del codice fino a quando non viene chiusa, devi farti
una form standard.
Salutoni
Sergio

 wrote in message
news:b7jngg$1kilb$
1...@ID-173193.news.dfncis.de

Grazie mille per il consiglio...
Se non dovessi riuscire ad ovviare al problema mi farò risentire...


 ha scritto nel messaggio
news:b7jngg$1kilb$1...@ID-173193.news.dfncis.de...

una curiosita'...
che tu sappia, qualche linguaggio prevede (di default) la chiusura
automatica del msgbox o no? forse il C?

 automatica del msgbox o no? forse il C?
Non sappio, ma il msgbox, di suo, č fatto per "obbligare" l'utente ad una
interazione, se hai bisogno di una interazione "opzionale" puoi/devi usare
altri strumenti.
Salutoni
Sergio

 automatica del msgbox o no? forse il C?
I MessageBox (ed i MsgBox del BV VB) sono delle finestre a scelta
obbligatoria, che tra l'altro la Microsoft stessa in un documento e
nell'altro pure raccomanda sempre di non usare mai dove sia previsto
l'utilizzo di procedure batch (oltre che in asp lato server o nei servizi
NT, ma qui andiamo già nel banale). Queste finestre in realtà sono quello
che viene spesso definito un componente software, di livello piuttosto alto
(tra le funzionalità standard del C non c'è e non ci può essere nulla di
talmente ad alto livello che si basi sul sottosistema grafico per espletare
le proprie funzionalità, mentre si può naturalmente utilizzare una insieme
di librerie ad hoc), e nessuno vieta di scriversi un componente simile che
implementi le funzionalità di chiusura automatica o in risposta ad un evento
(sia in VB che in C che in Java che in Python che in qualsivoglia strumento
che permetta di utilizzare le funzionalità di un sottosistema grafico a
finestre).
--
ale
http://www.sen.it

 Sergio
Ho provato a fare come dici tu, cioč creando un nuovo form,
ma la mia applicazione non parte addirittura piů...
Premesso che ho appena iniziato con 
vb.net
 ho cercato un po' in giro e
ho trovato che per aprire un nuovo form devo prima dichiarare con, ad
esempio DIM nome AS NEW Form() e poi mostrarlo con nome.show() .
Cosi non funziona ma se vado a rimuovere la riga di dichiarazione
tutto si sblocca...
Cosa ho sbagliato??? Help
Ringrazio ancora in anticipo
Ciao da Alex
P.S.: Spero di essermi spiegato...


 Cosa ho sbagliato??? Help
Le informazioni sono incomplete.
La maschera che si deve chiudere a tempo č la prima ad attivarsi ?
giuseppeD

 
La maschera che deve chiudersi a tempo viene aperta per seconda.
Viene aperta da un form precedente.


 Viene aperta da un form precedente.
Posta il codice con cui apri la form e la chiudi.
giuseppeD

Con il supporto di PInvoke tutto è possibile, anche chiudere una
MessageBox...
Public Class TimedMsgBox
   '// Esempio di TimedMessageBox con 
VB.NET
   '// Win 32 Functions
   Private Declare Function MessageBox Lib "user32" _
   Alias "MessageBoxA" _
  (ByVal hwnd As IntPtr, _
   ByVal lpText As String, _
   ByVal lpCaption As String, _
   ByVal wType As Long) As Int32
   Private Structure POINTAPI
      Public x As Int32
      Public y As Int32
   End Structure
   Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA"
(ByRef lpMsg As Msg, ByVal hwnd As IntPtr, ByVal wMsgFilterMin As Int32,
ByVal wMsgFilterMax As Int32, ByVal wRemoveMsg As Int32) As Int32
   Private Declare Sub PostQuitMessage Lib "user32" (ByVal nExitCode As
Int32)
   Private Const WM_QUIT = &H12
   Private Structure Msg
      Public hwnd As IntPtr
      Public Message As Int32
      Public wParam As Int32
      Public lParam As Int32
      Public time As Int32
      Public pt As POINTAPI
   End Structure
   Private Shared moTim As New Timer
   Public Shared Function Show(ByVal text As String, ByVal caption As
String, ByVal buttons As System.Windows.Forms.MessageBoxButtons, ByVal icon
As System.Windows.Forms.MessageBoxIcon, ByVal defaultButton As
System.Windows.Forms.MessageBoxDefaultButton, ByVal timeout As Int32) As
System.Windows.Forms.DialogResult
      moTim.Interval = timeout
      moTim.Start()
      AddHandler moTim.Tick, AddressOf elapsed
      Dim iRet As DialogResult = MessageBox(IntPtr.Zero, text, caption,
buttons Or icon Or defaultButton)
      Dim stMsg As Msg
      If PeekMessage(stMsg, IntPtr.Zero, WM_QUIT, WM_QUIT, 1) Then
         iRet = -1
      Else
         moTim.Stop()
         Return iRet
      End If
      moTim.Stop()
      RemoveHandler moTim.Tick, AddressOf elapsed
      Return iRet
   End Function
   Private Shared Sub elapsed(ByVal sender As Object, ByVal e As
System.EventArgs)
      PostQuitMessage(0)
   End Sub
End Class
Esempio d'uso:
If TimedMsgBox.Show("test", "caption", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, 2500) = -1 Then
         Console.WriteLine("Timeout")
      Else
         Console.WriteLine("user choice")
End If
Giochino niente male....  ;-)
HTH
-- 
Corrado Cavalli [Microsoft .NET MVP]
UGIdotNET - 
http://www.ugidotnet.org

 Public Class TimedMsgBox
-cut-
azz...
tutta sta' roba *solo* per far chiudere una msgbox?
meglio un form a parte no?

Giochino niente male....  ;-)
Un bel balzo in avanti rispetto al vecchio vb, davvero ;-)
-- 
ciao, hal
che gia' che c'ero mi sono salvato la tua risposta :-)

 '// Esempio di TimedMessageBox con 
VB.NET
A questo punto non conveniva farsi un componente "pure dotnet"?
-- 
ale
http://www.sen.it

 wrote in message
news:puina.24076$
LB6.5...@news1.tin.it

Questo è il codice integrale del mio programmino...
Private ora As String
Private sec As Integer = -1
Private min As Integer = -1
Private i As Integer
Private ftp As New Process()
Private aperto As Boolean = False
Private uscita As New uscita()
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Handles Button1.Click
        uscita.Show()
        aperto = True
    End Sub
 
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
Timer1.Tick
        If sec = -1 And min = -1 Then
            ftp.Start()
        End If
        If sec = -1 Then
            min = min + 1
            minuti.Text = Format(min)
        End If
        sec = sec + 1
        secondi.Text = Format(sec)
        If min = 0 Then
            If sec > 2 Then
                If ftp.HasExited() Then
                    If aperto = True Then
                        uscita.Close()
                    End If
                    Timer1.Stop()
                    Timer1.Enabled = False
                    MsgBox("Operazione completata")
                End If
            End If
        Else
            If ftp.HasExited() Then
                If aperto = True Then
                    uscita.Close()
                End If
                Timer1.Stop()
                Timer1.Enabled = False
                MsgBox("Operazione completata")
            End If
        End If
        If sec = 59 Then
            sec = -1
        End If
    End Sub
 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
MyBase.Load
        inizio.Text = Format(Now(), "Long Time")
        ftp.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
        ftp.StartInfo.FileName = "wwftp.exe"
        ftp.EnableRaisingEvents = True
    End Sub
dove uscita all'inizio è il secondo form.
Quando lo eseguo non parte ma se rimuovo le parti dove si fa riferimento
al
secondo form funziona tutto...
Spero tu o qualcun altro possa aiutarmi....
Grazie 1000
Ciao 


 secondo form funziona tutto...
Qual è esattamente il problema che si verifica lasciando le parti che si
riferiscono al secondo form?
Salutoni
Sergio

 wrote in message
news:b7lsce$27trg$
1...@ID-173193.news.dfncis.de

Non viene eseguito neanche il primo form, come se ci fosse qualcosa in
caricamento del form che lo chiude subito.
Non parte niente.


 Non parte niente.
Sinceramente non capisco, anche perchè nell'evento di load della tua form
non viene in alcun modo fatto riferimento al form uscita.
A meno che non sia direttamente il metodo new della form uscita a chiudere
tutto. Che c'è scritto in quel metodo?
Salutoni
Sergio

 wrote in message
news:b7ltog$2a0e0$
1...@ID-173193.news.dfncis.de

Finalmente ho trovato...
Avevo un problema sul secondo form che non mi faceva più continuare..
Ringrazio tutti per l'aiuto!!!
A risentirci!!!!!!!!


 Avevo un problema sul secondo form che non mi faceva più continuare..
per favore, a questo punto "confessa" qual era il problema:
1) siamo curiosi (da morire)
2) magari eviteremo di ripeterlo, quando si presenterà l'occasione.
Salutoni
Sergio

 wrote in message
news:b7lu6s$2cuhl$
1...@ID-173193.news.dfncis.de

Beh, (figuraccia che faccio adesso...) il secondo form non era altro
che una "copia" di un msgbox con due pulsanti: uno per chiudere tutto
e l'altro per chiudere solo il "simil-msgbox".
Per fare chiudere tutti e due i form con il primo pulsante, avevo
inserito
dim principale as new form1()
e nell evento click del button1
principale.close().
Così per provare ho rimosso queste due righe e adesso funziona.
Anche se non ho ben capito perchè visto che il close() era in un click
e non in un load addirittura di un secondo form...
Mah, se hai tempo e me lo sai spiegare, accetto volentieri!!!
Comunque grazie ancora per il supporto e la pazienza!
Ciao a tutti!!!!


 Mah, se hai tempo e me lo sai spiegare, accetto volentieri!!!
In effetti resto parecchio perplesso anch'io.
Dal codice che hai postato, l'unica parte del codice della form "uscita" che
veniva eseguito era quello relativo al metodo new. Se il problema non era lì
dentro (ma hai provato a guardarci?) non saprei proprio spiegarmelo.
Salutoni
Sergio