9
votes

msgbox qui disparaît automatiquement après un certain temps

existe-t-il n'importe quel type de msgbox dans vb.net qui donne un message et il disparaît automatiquement après un certain temps? Ou existe-t-il une méthode pour masquer le msgbox , sans cliquer sur OK?


3 commentaires

Peut-être devriez-vous implémenter votre propre boîte de message et obtenir son code pour la décolorer après un certain temps (il est facile de le faire). Je ne pense pas que les messages de messagerie ont cette fonctionnalité.


Pourriez-vous s'il vous plaît me donner un indice comment le faire?


Je suppose que cette réponse par aj le fait. N'oubliez pas de montrer le formulaire avec .Showdialog ()


9 Réponses :


3
votes

Non, je ne pense pas qu'il y ait un contrôle de cadre intégré qui le fera pour vous. Toutefois, vous pouvez facilement le faire avec une forme personnalisée qui tire une minuterie dans sa chargement charger . Ensuite, lorsque la quantité de temps définie est passée, dans la minuterie Evirsed événement, vous pouvez simplement fermer le formulaire.


0 commentaires

-1
votes

1 commentaires

Nous avons découragé les réponses composées de liens uniquement, veuillez l'expliquer brièvement. Dans le cas où ce lien a été supprimé, votre réponse deviendra un non-sens.



1
votes

Utilisez une minuterie ou un certain type de retard / de sommeil et après l'expiration de l'heure d'expiration

SendKeys.Send("~")


1 commentaires

Pourriez-vous ajouter un peu plus à votre réponse ou inclure un exemple de code?



0
votes

Je ne pense pas qu'il y ait un outil tel que cela. Mais je pense que vous pouvez faire cela avec suivir ces étapes;

  1. Créez une instance d'élément de formulaire et concevez-la comme une boîte à matières.
  2. En mode de charge de formulaire, obtenez l'heure du système ou démarrez la minuterie avec une valeur d'intervalle.
  3. Cette minuterie cochez combien de secondes vous voulez alors appelez le formulaire événement proche.

    P.s: Si je me trompe, je suis désolé. Je n'essaye que de résoudre quelque chose, peut-être qu'il y a un meilleur moyen de résoudre votre problème.


0 commentaires

10
votes

Vous pouvez utiliser

CreateObject ("wscript.shell"). Popup ("Bienvenue", 1, "Titre")

Cette msgbox se fermera automatiquement après 1 seconde


4 commentaires

Y a-t-il un moyen de disposer de méthodes de ce objet automatiquement par IntelliSense? Doit-il être coulé à un type?


Y a-t-il un moyen de le faire apparaître sur toutes les autres fenêtres? Ou pour spécifier une position?


Juste pour ajouter si vous vouliez utiliser ceci dans VBA Utilisez appel avant la ligne entière


CreateObject ("wscript.shell"). Popup ("Vous êtes tôt", 2, msgbox_string, msgboxstyle.critique) Nous pouvons également ajouter du style à la boîte.



1
votes

Inspiré des réponses, c'est ce que je suis venu avec, fonctionnant bien dans des cas simples, permettant d'utiliser toutes les fonctionnalités de MSGBox directement:

Imports System.Threading

Module FormUtils
    Private sAutoClosed As Boolean

    Private Sub CloseMsgBoxDelay(ByVal data As Object)
        System.Threading.Thread.Sleep(CInt(data))
        SendKeys.SendWait("~")
        sAutoClosed = True
    End Sub

    Public Function MsgBoxDelayClose(prompt As Object, ByVal delay As Integer, Optional delayedResult As MsgBoxResult = MsgBoxResult.Ok, Optional buttons As MsgBoxStyle = MsgBoxStyle.ApplicationModal, Optional title As Object = Nothing) As MsgBoxResult
        Dim t As Thread

        If delay > 0 Then
            sAutoClosed = False
            t = New Thread(AddressOf CloseMsgBoxDelay)
            t.Start(delay)

            MsgBoxDelayClose = MsgBox(prompt, buttons, title)
            If sAutoClosed Then
                MsgBoxDelayClose = delayedResult
            Else
                t.Abort()
            End If
        Else
            MsgBoxDelayClose = MsgBox(prompt, buttons, title)
        End If

    End Function
End Module


0 commentaires

0
votes

Vous pouvez le faire en ajoutant une minuterie à votre formulaire. 'Minuterie à autoclose après 100 ms Dim second secondes comme entier = 100 xxx


0 commentaires

0
votes

J'ai un certain code pour afficher le temps mis à jour du fichier et fermer la boîte de message dans les 3 secondes. S'il vous plaît voir ci-dessous. J'espère que ce code peut supporter ce sujet.

    Sub Workbook_Open()
    Application.ScreenUpdating = False
    SplashUserForm.Show
    Windows(ThisWorkbook.Name).Visible = True
    Application.ScreenUpdating = True

    last_update = "Last updated : " & Format(FileDateTime(ThisWorkbook.FullName), "ddd dd/mm/yy hh:mm ampm")

    'Close message after time if no action!
    Dim myTimedBox As Object
    Dim boxTime%, myExpired%, myOK%, myQuestBox%

    'Access timed message box.
    Set myTimedBox = CreateObject("WScript.Shell")
    boxTime = 3


    'User Selected "OK."
    If myQuestBox = 1 Then
    'Add any code in place of code below for this condition!
        myOK = myTimedBox.Popup(last_update & vbCr & "Do nothing and this message will close in 3 seconds.", _
        boxTime, "You Took Action!", vbOKOnly)

    Else

    'User took no Action!
        myExpired = myTimedBox.Popup(last_update & vbCr & "Do nothing and this message will close in 3 seconds.", _
        boxTime, "No Action Taken!", vbOKOnly)
    End If


End Sub


0 commentaires

2
votes

La réponse de Linendra Soni est bonne, mais elle peut ne pas fonctionner dans les nouvelles versions de Windows et / ou Excel.

Cela fonctionne parfaitement dans les nouvelles versions: < Pré> xxx

Utilisez-le comme ceci: xxx

ou < Pré> xxx

sortie:

 Entrez la description de l'image ici


2 commentaires

Ibo, je viens d'utiliser votre code. Comment puis-je ajouter une nouvelle ligne? J'ai essayé VBNewline et VBCLLF, mais ils n'ont pas fonctionné.


String = "Line 1" & VBNewline & "Line2", remplacez "Hello!" avec str