Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Empêcher d'ouvrir plusieurs fois la même fenêtre

4 réponses
Avatar
Pompier Christian
bonjour,
comment puis je faire pour empêcher d'ouvrir plusieurs fois la même fenêtre.
par ex j'ai 2 form une appelée FrmAccueil et l'autre FrmClient. Sur
FrmAccueil je met un bouton qui au click ouvrira FrmClient.
Je souhaiterais qu'au click l'application verifie si FrmClient est deja
ouverte, si c'est le cas elle le dira à l'utilisateur sinon elle l'ouvre.
Comment puis je resolver mon pb?
merci

4 réponses

Avatar
AlexC
Salut,

Il suffit de déclarer une variable globale de type FrmClient, dansle
gestionnaire d'évènenemt de ton bouton tu verifie si la variable est à
nothing
si elle ne l'ai pas tu l'initialise avec l'instance de FrmClient sinon tu
sors de la procédure.
Ex :

Private GFrmClient as FrmClient

Public Sub Button1_click(sender as object, e as buttoneventargs)handles
button1.click
If not GFrmClient is nothing then
GFrmClient = new GFrmClient
GFrmClient.Show
End If
End Sub

Voilà @+

"Pompier Christian" a écrit dans le
message de news: e9$
bonjour,
comment puis je faire pour empêcher d'ouvrir plusieurs fois la même
fenêtre.
par ex j'ai 2 form une appelée FrmAccueil et l'autre FrmClient. Sur
FrmAccueil je met un bouton qui au click ouvrira FrmClient.
Je souhaiterais qu'au click l'application verifie si FrmClient est deja
ouverte, si c'est le cas elle le dira à l'utilisateur sinon elle l'ouvre.
Comment puis je resolver mon pb?
merci




Avatar
Pompier Christian
merci
"AlexC" <(@Anti-Spam)#(@Anti-Spam)#> a écrit
dans le message de news:
Salut,

Il suffit de déclarer une variable globale de type FrmClient, dansle
gestionnaire d'évènenemt de ton bouton tu verifie si la variable est à
nothing
si elle ne l'ai pas tu l'initialise avec l'instance de FrmClient sinon tu
sors de la procédure.
Ex :

Private GFrmClient as FrmClient

Public Sub Button1_click(sender as object, e as buttoneventargs)handles
button1.click
If not GFrmClient is nothing then
GFrmClient = new GFrmClient
GFrmClient.Show
End If
End Sub

Voilà @+

"Pompier Christian" a écrit dans le
message de news: e9$
> bonjour,
> comment puis je faire pour empêcher d'ouvrir plusieurs fois la même
> fenêtre.
> par ex j'ai 2 form une appelée FrmAccueil et l'autre FrmClient. Sur
> FrmAccueil je met un bouton qui au click ouvrira FrmClient.
> Je souhaiterais qu'au click l'application verifie si FrmClient est deja
> ouverte, si c'est le cas elle le dira à l'utilisateur sinon elle


l'ouvre.
> Comment puis je resolver mon pb?
> merci
>
>




Avatar
Franck Jobard
Dans le cas d'une Mdi, utilise la réflexion, ca évite de stocker des
varaibles pour chaque form
Franck

The code

static public Form GetHandle( Form myParent, string stNomForm )
{
try
{
foreach (Form f in myParent.MdiChildren)
{
string stTypeForm = f.ToString( );
stTypeForm = stTypeForm.Substring( 0, stTypeForm.IndexOf(',') );
if (stTypeForm == stNomForm)
return f;
}
}
catch
{
return null;
}
return null;
}

/// <summary>
/// remplace une métaclasse.
/// permet de construire une feuille sur un nom de type fourni dans une
chaine
/// </summary>
static public Form NewInstanceForm( Form myParent, string stNomForm )
{
try
{
System.Reflection.Assembly myAssembly System.Reflection.Assembly.LoadFrom(ChaineEnCours + ".exe");
object form = myAssembly.CreateInstance( stNomForm ) ;

if(form is Form)
return form as Form ;
else
return null ;
}
catch
{
return null ;
}
}

/// <summary>
/// remplace une métaclasse.
/// permet de construire une feuille sur un nom de type fourni dans une
chaine
/// </summary>
static public bool CreateInstanceForm( Form myParent, string stNomForm )
{
try
{
Form frm1 = GetHandle( myParent, stNomForm );
if (frm1 == null)
{
System.Reflection.Assembly myAssembly System.Reflection.Assembly.LoadFrom("NomExecutable.exe");
frm1 = (_FicheComposants) myAssembly.CreateInstance( stNomForm );
frm1.MdiParent = myParent;
}

frm1.Show();
frm1.Activate( );

}
catch
{
return false;
}
return true;
}



"Pompier Christian" a écrit dans le
message de news:e9$
bonjour,
comment puis je faire pour empêcher d'ouvrir plusieurs fois la même


fenêtre.
par ex j'ai 2 form une appelée FrmAccueil et l'autre FrmClient. Sur
FrmAccueil je met un bouton qui au click ouvrira FrmClient.
Je souhaiterais qu'au click l'application verifie si FrmClient est deja
ouverte, si c'est le cas elle le dira à l'utilisateur sinon elle l'ouvre.
Comment puis je resolver mon pb?
merci




Avatar
Pompier Christian
desole de t'embeter mais la ca se complique
pourrais tu me presenter brievement ce que fait chaque fonction et est ce
que les 3 fonction ont un lien entre-elles.
merci
"Franck Jobard" a écrit dans le message de
news:
Dans le cas d'une Mdi, utilise la réflexion, ca évite de stocker des
varaibles pour chaque form
Franck

The code

static public Form GetHandle( Form myParent, string stNomForm )
{
try
{
foreach (Form f in myParent.MdiChildren)
{
string stTypeForm = f.ToString( );
stTypeForm = stTypeForm.Substring( 0, stTypeForm.IndexOf(',') );
if (stTypeForm == stNomForm)
return f;
}
}
catch
{
return null;
}
return null;
}

/// <summary>
/// remplace une métaclasse.
/// permet de construire une feuille sur un nom de type fourni dans une
chaine
/// </summary>
static public Form NewInstanceForm( Form myParent, string stNomForm )
{
try
{
System.Reflection.Assembly myAssembly > System.Reflection.Assembly.LoadFrom(ChaineEnCours + ".exe");
object form = myAssembly.CreateInstance( stNomForm ) ;

if(form is Form)
return form as Form ;
else
return null ;
}
catch
{
return null ;
}
}

/// <summary>
/// remplace une métaclasse.
/// permet de construire une feuille sur un nom de type fourni dans une
chaine
/// </summary>
static public bool CreateInstanceForm( Form myParent, string stNomForm )
{
try
{
Form frm1 = GetHandle( myParent, stNomForm );
if (frm1 == null)
{
System.Reflection.Assembly myAssembly > System.Reflection.Assembly.LoadFrom("NomExecutable.exe");
frm1 = (_FicheComposants) myAssembly.CreateInstance( stNomForm );
frm1.MdiParent = myParent;
}

frm1.Show();
frm1.Activate( );

}
catch
{
return false;
}
return true;
}



"Pompier Christian" a écrit dans le
message de news:e9$
> bonjour,
> comment puis je faire pour empêcher d'ouvrir plusieurs fois la même
fenêtre.
> par ex j'ai 2 form une appelée FrmAccueil et l'autre FrmClient. Sur
> FrmAccueil je met un bouton qui au click ouvrira FrmClient.
> Je souhaiterais qu'au click l'application verifie si FrmClient est deja
> ouverte, si c'est le cas elle le dira à l'utilisateur sinon elle


l'ouvre.
> Comment puis je resolver mon pb?
> merci
>
>