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

c# vs2005 form dans dll

6 réponses
Avatar
Sylfelin
Bonjour,

Nouveau dans dot.net quelle est la technique pour mettre une form dans
une dll (site web ou exemple ou petite explication) ?

Merci

--

--------------------------
Merci
Sylfelin

6 réponses

Avatar
Gilles TOURREAU
Le Thu, 27 Sep 2007 12:59:49 +0200, Sylfelin
a écrit:

Bonjour,

Nouveau dans dot.net quelle est la technique pour mettre une form dans
une dll (site web ou exemple ou petite explication) ?

Merci




Il suffit de créer un projet de type "Bibliothèque de contrôles Windows"
et d'ajouter vos Form dedans...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Sylfelin
> Il suffit de créer un projet de type "Bibliothèque de contrôles Windows" et
d'ajouter vos Form dedans...



Techniquement la méthode ci-dessous, qui fonctionne, est-elle correcte
au niveau de l'instentiation et de la libération (fermeture) de la
fenêtre) ?

Dans l'appli appelante:
- Ajout de la dll dans les réfrences
- puis le code ci-dessous
fParam myForm = new fParam();
myForm.Show();

Dans la form (fParam) de la dll je fait simplement un Close();


Merci

--

--------------------------
Merci
Sylfelin
Avatar
Gilles TOURREAU
Le Thu, 27 Sep 2007 15:42:09 +0200, Sylfelin
a écrit:

Il suffit de créer un projet de type "Bibliothèque de contrôles
Windows" et d'ajouter vos Form dedans...



Techniquement la méthode ci-dessous, qui fonctionne, est-elle correcte
au niveau de l'instentiation et de la libération (fermeture) de la
fenêtre) ?

Dans l'appli appelante:
- Ajout de la dll dans les réfrences
- puis le code ci-dessous
fParam myForm = new fParam();
myForm.Show();

Dans la form (fParam) de la dll je fait simplement un Close();


Merci




Techniquement c'est correct !

Cependant est-ce que cette fenêtre doit être modale ? Ou non-modale comme
vous l'avez-bien fait avec Show()...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Sylfelin
>
Techniquement c'est correct !

Cependant est-ce que cette fenêtre doit être modale ? Ou non-modale comme
vous l'avez-bien fait avec Show()...



Pourrait être les 2, je vais voir comment gérer cela. Par contre j'au
aussi la syntaxe ci-dessous:

Form myForm = (Form)Activator.CreateInstance(typeof(fParam));

Quelle différence entre passer par Activator ou par New ?

Merci

--

--------------------------
Merci
Sylfelin
Avatar
Gilles TOURREAU
Le Thu, 27 Sep 2007 16:24:55 +0200, Sylfelin
a écrit:


Techniquement c'est correct !

Cependant est-ce que cette fenêtre doit être modale ? Ou non-modale
comme vous l'avez-bien fait avec Show()...



Pourrait être les 2, je vais voir comment gérer cela. Par contre j'au
aussi la syntaxe ci-dessous:

Form myForm = (Form)Activator.CreateInstance(typeof(fParam));

Quelle différence entre passer par Activator ou par New ?

Merci




Activor permet de créer une fenêtre en connaissant son type à
l'execution...

Type t;

if (UtilisateurChoisiForm1 == true)
t = typeof(Form1);
else if (UtilisateurChoisiForm2 == true)
t = typeof(Form2);
else
t = typeof(AutreForm);

Form myForm = (Form)Activator.CreateInstance(t);
myForm.Show();

Cette exemple est simple et peut-être "plus générique" en proposant par
exemple à l'utilisateur, une liste de différentes Form à ouvrir...

Cependant avec Activator, vous perdez en contrôle de type des paramètres
du constructeur de votre Form...
Exemple :

Si MaForm contient un constructeur :

public MaForm(int nombre, string s)
{
...
}

Si vous faites :
MaForm f = (MaForm)Activator.CreateInstance(typeof(MaForm), new object[]
{ 1664, "Bonjour"} ); //(Je suis pas sûr du prototype de la méthode...)

Cela compile sans problème, et fonctionne à l'execution...

Tandis que :

MaForm f = (MaForm)Activator.CreateInstance(typeof(MaForm), new object[]
{ "Bonjour", new object() } );

Cela compile sans problème, mais à l'execution vous aurez une exception...

Si vous utilisez new MaForm("Bonjour", new object()) , vous aurez un
message d'insulte du compilateur vous indiquant que votre code n'est pas
correct...



Autre erreur possible :

MaForm f = (MaForm)Activator.CreateInstance(typeof(UneAutreForm));

Cela compile sans problème, mais à l'execution => Exception


La morale de l'histoire :
Typez au maximum votre code en utilisant si possible (dans ce cas) le code
suivant : new MaForm(....)
Utilisez uniquement Activator, si vous ne savez pas à l'avance quel Form
va être affichée...

********************

Si vous utilisez des fenêtres modales préférez l'utilisation de ce genre
de code :

using (MaForm f = new MaForm())
{
f.ShowDialog();
}

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Sylfelin
>Gilles TOURREAU a formulé la demande :



Merci pour la clareté de vos réponses

--

--------------------------
Merci
Sylfelin