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

Le
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
Vos réponses
Trier par : date / pertinence
AlexC
Le #12536801
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" 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




Pompier Christian
Le #12536791
merci
"AlexC" 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" 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
>
>




Franck Jobard
Le #12536691
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" 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




Pompier Christian
Le #12536681
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" 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" 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
>
>




Publicité
Poster une réponse
Anonyme