Detecter si j'ai lancer une instance d'une feuille
4 réponses
Matteo
Bonjour,
Je suis debutant en dotnet et je fais un prog qui doit permettre a
utilisateur de travailler sur deux feuille simultanément.
Donc je lance ma premiere feuille et j'ai un bouton qui ouvre une deuxieme
feuille.
Mais je ne veux pas que l'utilisateur clique plusieur fois sur ce bouton et
ouvrir ainsi plusieur feuille.
Est il possible de detecter si la feuille est deja ouverte ?
PS: je ne veux pas ouvrir ma deuxieme feuille dans avec la methode
Showdialog car l'utilisateur doit pouvoir acceder au 2 feuilles.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Matteo ! :O)
Voici une solution simple :
Dans ton formulaire *appelé* (celui qui ne peut être ouvert plus d'une fois), ajoute un compteur (propriété Shared) que tu incrémentes via les fonctions Show() et ShowDialog() et décrémente via Close() (avec le mot clé Shadows). '*** Option Explicit On
Public Class Form2 Inherits System.Windows.Forms.Form
Private Shared m_nCount As Int32
' Le Code généré par le Concepteur Windows Form vient ici
Public Shared ReadOnly Property Count() Get Return m_nCount End Get End Property
Public Shadows Sub Show()
m_nCount += 1 MyBase.Show()
End Sub
Public Shadows Sub ShowDialog()
m_nCount += 1 MyBase.ShowDialog()
End Sub
Public Shadows Sub Close()
m_nCount -= 1 MyBase.Close()
End Sub
End Class '***
Ainsi dans ton formulaire appelant, tu n'as qu'à testé le Count de la classe Form2 avant de procéder à l'ouverture : '*** Option Explicit On
Public Class Form1 Inherits System.Windows.Forms.Form
' Le Code généré par le Concepteur Windows Form vient ici
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If (Form2.Count = 0) Then Dim frm As Form2 frm = New Form2 frm.Show() Else MessageBox.Show("La fenêtre est déjà ouverte.") End If
End Sub End Class '***
-- Cordialement Yanick MVP pour Visual Basic "Matteo " <stephane<nospam> a écrit dans le message de news:d5sm8i$4r0$
Bonjour,
Je suis debutant en dotnet et je fais un prog qui doit permettre a utilisateur de travailler sur deux feuille simultanément. Donc je lance ma premiere feuille et j'ai un bouton qui ouvre une deuxieme feuille. Mais je ne veux pas que l'utilisateur clique plusieur fois sur ce bouton
et
ouvrir ainsi plusieur feuille. Est il possible de detecter si la feuille est deja ouverte ?
PS: je ne veux pas ouvrir ma deuxieme feuille dans avec la methode Showdialog car l'utilisateur doit pouvoir acceder au 2 feuilles.
Merci.
Salut Matteo ! :O)
Voici une solution simple :
Dans ton formulaire *appelé* (celui qui ne peut être ouvert plus d'une
fois), ajoute un compteur (propriété Shared) que tu incrémentes via les
fonctions Show() et ShowDialog() et décrémente via Close() (avec le mot clé
Shadows).
'***
Option Explicit On
Public Class Form2
Inherits System.Windows.Forms.Form
Private Shared m_nCount As Int32
' Le Code généré par le Concepteur Windows Form vient ici
Public Shared ReadOnly Property Count()
Get
Return m_nCount
End Get
End Property
Public Shadows Sub Show()
m_nCount += 1
MyBase.Show()
End Sub
Public Shadows Sub ShowDialog()
m_nCount += 1
MyBase.ShowDialog()
End Sub
Public Shadows Sub Close()
m_nCount -= 1
MyBase.Close()
End Sub
End Class
'***
Ainsi dans ton formulaire appelant, tu n'as qu'à testé le Count de la classe
Form2 avant de procéder à l'ouverture :
'***
Option Explicit On
Public Class Form1
Inherits System.Windows.Forms.Form
' Le Code généré par le Concepteur Windows Form vient ici
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
If (Form2.Count = 0) Then
Dim frm As Form2
frm = New Form2
frm.Show()
Else
MessageBox.Show("La fenêtre est déjà ouverte.")
End If
End Sub
End Class
'***
--
Cordialement
Yanick
MVP pour Visual Basic
"Matteo 46@caramail.com>" <stephane<nospam> a écrit dans le message de
news:d5sm8i$4r0$1@s1.news.oleane.net...
Bonjour,
Je suis debutant en dotnet et je fais un prog qui doit permettre a
utilisateur de travailler sur deux feuille simultanément.
Donc je lance ma premiere feuille et j'ai un bouton qui ouvre une deuxieme
feuille.
Mais je ne veux pas que l'utilisateur clique plusieur fois sur ce bouton
et
ouvrir ainsi plusieur feuille.
Est il possible de detecter si la feuille est deja ouverte ?
PS: je ne veux pas ouvrir ma deuxieme feuille dans avec la methode
Showdialog car l'utilisateur doit pouvoir acceder au 2 feuilles.
Dans ton formulaire *appelé* (celui qui ne peut être ouvert plus d'une fois), ajoute un compteur (propriété Shared) que tu incrémentes via les fonctions Show() et ShowDialog() et décrémente via Close() (avec le mot clé Shadows). '*** Option Explicit On
Public Class Form2 Inherits System.Windows.Forms.Form
Private Shared m_nCount As Int32
' Le Code généré par le Concepteur Windows Form vient ici
Public Shared ReadOnly Property Count() Get Return m_nCount End Get End Property
Public Shadows Sub Show()
m_nCount += 1 MyBase.Show()
End Sub
Public Shadows Sub ShowDialog()
m_nCount += 1 MyBase.ShowDialog()
End Sub
Public Shadows Sub Close()
m_nCount -= 1 MyBase.Close()
End Sub
End Class '***
Ainsi dans ton formulaire appelant, tu n'as qu'à testé le Count de la classe Form2 avant de procéder à l'ouverture : '*** Option Explicit On
Public Class Form1 Inherits System.Windows.Forms.Form
' Le Code généré par le Concepteur Windows Form vient ici
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If (Form2.Count = 0) Then Dim frm As Form2 frm = New Form2 frm.Show() Else MessageBox.Show("La fenêtre est déjà ouverte.") End If
End Sub End Class '***
-- Cordialement Yanick MVP pour Visual Basic "Matteo " <stephane<nospam> a écrit dans le message de news:d5sm8i$4r0$
Bonjour,
Je suis debutant en dotnet et je fais un prog qui doit permettre a utilisateur de travailler sur deux feuille simultanément. Donc je lance ma premiere feuille et j'ai un bouton qui ouvre une deuxieme feuille. Mais je ne veux pas que l'utilisateur clique plusieur fois sur ce bouton
et
ouvrir ainsi plusieur feuille. Est il possible de detecter si la feuille est deja ouverte ?
PS: je ne veux pas ouvrir ma deuxieme feuille dans avec la methode Showdialog car l'utilisateur doit pouvoir acceder au 2 feuilles.
Merci.
Matteo
Pas bete du tout ton idée. Merci bcp pour ton astuce.
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news:e5dq%
Salut Matteo ! :O)
Voici une solution simple :
Dans ton formulaire *appelé* (celui qui ne peut être ouvert plus d'une fois), ajoute un compteur (propriété Shared) que tu incrémentes via les fonctions Show() et ShowDialog() et décrémente via Close() (avec le mot
clé
Shadows). '*** Option Explicit On
Public Class Form2 Inherits System.Windows.Forms.Form
Private Shared m_nCount As Int32
' Le Code généré par le Concepteur Windows Form vient ici
Public Shared ReadOnly Property Count() Get Return m_nCount End Get End Property
Public Shadows Sub Show()
m_nCount += 1 MyBase.Show()
End Sub
Public Shadows Sub ShowDialog()
m_nCount += 1 MyBase.ShowDialog()
End Sub
Public Shadows Sub Close()
m_nCount -= 1 MyBase.Close()
End Sub
End Class '***
Ainsi dans ton formulaire appelant, tu n'as qu'à testé le Count de la
classe
Form2 avant de procéder à l'ouverture : '*** Option Explicit On
Public Class Form1 Inherits System.Windows.Forms.Form
' Le Code généré par le Concepteur Windows Form vient ici
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If (Form2.Count = 0) Then Dim frm As Form2 frm = New Form2 frm.Show() Else MessageBox.Show("La fenêtre est déjà ouverte.") End If
End Sub End Class '***
-- Cordialement Yanick MVP pour Visual Basic "Matteo " <stephane<nospam> a écrit dans le message de news:d5sm8i$4r0$ > Bonjour, > > Je suis debutant en dotnet et je fais un prog qui doit permettre a > utilisateur de travailler sur deux feuille simultanément. > Donc je lance ma premiere feuille et j'ai un bouton qui ouvre une
deuxieme
> feuille. > Mais je ne veux pas que l'utilisateur clique plusieur fois sur ce bouton et > ouvrir ainsi plusieur feuille. > Est il possible de detecter si la feuille est deja ouverte ? > > PS: je ne veux pas ouvrir ma deuxieme feuille dans avec la methode > Showdialog car l'utilisateur doit pouvoir acceder au 2 feuilles. > > > Merci. > >
Pas bete du tout ton idée.
Merci bcp pour ton astuce.
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:e5dq%23yjVFHA.3140@TK2MSFTNGP14.phx.gbl...
Salut Matteo ! :O)
Voici une solution simple :
Dans ton formulaire *appelé* (celui qui ne peut être ouvert plus d'une
fois), ajoute un compteur (propriété Shared) que tu incrémentes via les
fonctions Show() et ShowDialog() et décrémente via Close() (avec le mot
clé
Shadows).
'***
Option Explicit On
Public Class Form2
Inherits System.Windows.Forms.Form
Private Shared m_nCount As Int32
' Le Code généré par le Concepteur Windows Form vient ici
Public Shared ReadOnly Property Count()
Get
Return m_nCount
End Get
End Property
Public Shadows Sub Show()
m_nCount += 1
MyBase.Show()
End Sub
Public Shadows Sub ShowDialog()
m_nCount += 1
MyBase.ShowDialog()
End Sub
Public Shadows Sub Close()
m_nCount -= 1
MyBase.Close()
End Sub
End Class
'***
Ainsi dans ton formulaire appelant, tu n'as qu'à testé le Count de la
classe
Form2 avant de procéder à l'ouverture :
'***
Option Explicit On
Public Class Form1
Inherits System.Windows.Forms.Form
' Le Code généré par le Concepteur Windows Form vient ici
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
If (Form2.Count = 0) Then
Dim frm As Form2
frm = New Form2
frm.Show()
Else
MessageBox.Show("La fenêtre est déjà ouverte.")
End If
End Sub
End Class
'***
--
Cordialement
Yanick
MVP pour Visual Basic
"Matteo 46@caramail.com>" <stephane<nospam> a écrit dans le message de
news:d5sm8i$4r0$1@s1.news.oleane.net...
> Bonjour,
>
> Je suis debutant en dotnet et je fais un prog qui doit permettre a
> utilisateur de travailler sur deux feuille simultanément.
> Donc je lance ma premiere feuille et j'ai un bouton qui ouvre une
deuxieme
> feuille.
> Mais je ne veux pas que l'utilisateur clique plusieur fois sur ce bouton
et
> ouvrir ainsi plusieur feuille.
> Est il possible de detecter si la feuille est deja ouverte ?
>
> PS: je ne veux pas ouvrir ma deuxieme feuille dans avec la methode
> Showdialog car l'utilisateur doit pouvoir acceder au 2 feuilles.
>
>
> Merci.
>
>
Pas bete du tout ton idée. Merci bcp pour ton astuce.
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news:e5dq%
Salut Matteo ! :O)
Voici une solution simple :
Dans ton formulaire *appelé* (celui qui ne peut être ouvert plus d'une fois), ajoute un compteur (propriété Shared) que tu incrémentes via les fonctions Show() et ShowDialog() et décrémente via Close() (avec le mot
clé
Shadows). '*** Option Explicit On
Public Class Form2 Inherits System.Windows.Forms.Form
Private Shared m_nCount As Int32
' Le Code généré par le Concepteur Windows Form vient ici
Public Shared ReadOnly Property Count() Get Return m_nCount End Get End Property
Public Shadows Sub Show()
m_nCount += 1 MyBase.Show()
End Sub
Public Shadows Sub ShowDialog()
m_nCount += 1 MyBase.ShowDialog()
End Sub
Public Shadows Sub Close()
m_nCount -= 1 MyBase.Close()
End Sub
End Class '***
Ainsi dans ton formulaire appelant, tu n'as qu'à testé le Count de la
classe
Form2 avant de procéder à l'ouverture : '*** Option Explicit On
Public Class Form1 Inherits System.Windows.Forms.Form
' Le Code généré par le Concepteur Windows Form vient ici
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If (Form2.Count = 0) Then Dim frm As Form2 frm = New Form2 frm.Show() Else MessageBox.Show("La fenêtre est déjà ouverte.") End If
End Sub End Class '***
-- Cordialement Yanick MVP pour Visual Basic "Matteo " <stephane<nospam> a écrit dans le message de news:d5sm8i$4r0$ > Bonjour, > > Je suis debutant en dotnet et je fais un prog qui doit permettre a > utilisateur de travailler sur deux feuille simultanément. > Donc je lance ma premiere feuille et j'ai un bouton qui ouvre une
deuxieme
> feuille. > Mais je ne veux pas que l'utilisateur clique plusieur fois sur ce bouton et > ouvrir ainsi plusieur feuille. > Est il possible de detecter si la feuille est deja ouverte ? > > PS: je ne veux pas ouvrir ma deuxieme feuille dans avec la methode > Showdialog car l'utilisateur doit pouvoir acceder au 2 feuilles. > > > Merci. > >
Zoury
Peut-être mais je l''ai posté trop vite.. :O) ce n'est pas la méthode Close() qu'il faut remplacer mais plutôt l'événement Closed qu'il faut implémenté.
Remplace :
> Public Shadows Sub Close() > > m_nCount -= 1 > MyBase.Close() > > End Sub
Par : '*** Private Sub Form2_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed m_nCount -= 1 End Sub '***
-- Cordialement Yanick MVP pour Visual Basic
Peut-être mais je l''ai posté trop vite.. :O)
ce n'est pas la méthode Close() qu'il faut remplacer mais plutôt l'événement
Closed qu'il faut implémenté.
Remplace :
> Public Shadows Sub Close()
>
> m_nCount -= 1
> MyBase.Close()
>
> End Sub
Par :
'***
Private Sub Form2_Closed(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Closed
m_nCount -= 1
End Sub
'***
Peut-être mais je l''ai posté trop vite.. :O) ce n'est pas la méthode Close() qu'il faut remplacer mais plutôt l'événement Closed qu'il faut implémenté.
Remplace :
> Public Shadows Sub Close() > > m_nCount -= 1 > MyBase.Close() > > End Sub
Par : '*** Private Sub Form2_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed m_nCount -= 1 End Sub '***
-- Cordialement Yanick MVP pour Visual Basic
Matteo
Ok merci Zoury pour toutes ces précisions.
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news:eCjik$
Peut-être mais je l''ai posté trop vite.. :O) ce n'est pas la méthode Close() qu'il faut remplacer mais plutôt
l'événement
Closed qu'il faut implémenté.
Remplace : > > Public Shadows Sub Close() > > > > m_nCount -= 1 > > MyBase.Close() > > > > End Sub
Par : '*** Private Sub Form2_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed m_nCount -= 1 End Sub '***
-- Cordialement Yanick MVP pour Visual Basic
Ok merci Zoury pour toutes ces précisions.
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:eCjik$jVFHA.1404@TK2MSFTNGP09.phx.gbl...
Peut-être mais je l''ai posté trop vite.. :O)
ce n'est pas la méthode Close() qu'il faut remplacer mais plutôt
l'événement
Closed qu'il faut implémenté.
Remplace :
> > Public Shadows Sub Close()
> >
> > m_nCount -= 1
> > MyBase.Close()
> >
> > End Sub
Par :
'***
Private Sub Form2_Closed(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Closed
m_nCount -= 1
End Sub
'***