Création DLL

facbest Messages postés 47 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 7 janvier 2014 - 7 avril 2009 à 11:46
facbest Messages postés 47 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 7 janvier 2014 - 7 avril 2009 à 16:40
Bonjour,

A partir de ce code est il possible de créer une dll j'ai bien cherché un peut partout mais j'ai rien trouvé.

private void listView1_Click(object sender, EventArgs e)
{



foreach (System.Windows.Forms.ListViewItem couleur1 in this.listView1.Items)
{

couleur1.UseItemStyleForSubItems = true;

string[] agf = { couleur1.Text };

for (int i = 0; i < agf.Length; i++)
{
if (couleur1.Selected)

couleur1.SubItems[i].ForeColor = Color.Red;



}
}
}

J'ai bien créer ma dll mais qand je met le code ci-dessus il connait pas les forms.

Ca serait sympa de me dire çi c'est possible déja de créer une dll comme ça comment je peut reconnaitre les forms et comment je peut appeler la dll.

voiçi la dll construite qui est référencée:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;



namespace algo_8
{
public class algo
{

public algo()
{


}




}
}

merçi par avance de vos réponses.

7 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 avril 2009 à 12:27
Salut,
Pas sûr d'avoir compris...
S'il reconnaît pas System.Windows.Form, c'est probablement à cause du type de projet, tu es sûrement en application Console?

<hr />
-Blog-
-Site Perso-
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
7 avril 2009 à 14:34
Salut

Ajoute une référence à System.Windows.Forms dans ton projet dll, puis ajoute un using System.Windows.Forms dans ton fichier.

PS : n'oublie pas d'ajouter une référence vers ta dll dans ton projet principal.

Krimog :
while (!succeed = try()) ;
0
facbest Messages postés 47 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 7 janvier 2014
7 avril 2009 à 14:34
Salut Bidou,

j'ai un projet windows form de nom "officiel" avec namespace "essais" et une classe "Form3_8" pour créer ma dll j'ai fait click droit sur "officiel" nouveau projet bibliothéque de classe que j'ai nommé "algo_8" ensuite je suis allé à référence dans "essais" et j'ai rajouté la référence "algo_8" ce qui m'à donné dans mon projet 2 namespaces "essais" avec la classe "Form3_8" et "algo_8" avec la classe "algo" .C'est peut être là le problème ?...
0
facbest Messages postés 47 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 7 janvier 2014
7 avril 2009 à 15:42
Re,

excusez moi mes vos messages ce sont croisé avec m'a dernière question!

"Ajoute une référence à System.Windows.Forms dans ton projet dll, puis ajoute un using System.Windows.Forms dans ton fichier."

là j'ai bien fait.

par contre pour la référence vers la dll il me fait un message d'erreur " Une référence à "Essais" n'à pas pu être ajouté. L'ajout de ce projet en tant que référence entrainerait une dépendance circulaire."

Pour listView1

Il fait un message d'erreur "Erreur 1 'algo_8.algo' ne contient pas une définition pour 'listView1' et aucune méthode d'extension 'listView1' acceptant un premier argument de type 'algo_8.algo' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?)

Et pour finir comment je peut appeler la dll à partir de mon click dans "essais"? j'en ai aucune idée.

Merçi d'avance pour vos réponses.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
7 avril 2009 à 16:08
"L'ajout de ce projet en tant que référence entrainerait une dépendance circulaire."

Disons que tu projet exécutable s'appelle proj1 et ta dll s'appelle proj2.

proj1 DOIT référencer proj2, mais surtout pas l'inverse. C'est justement le principe d'une DLL, de marcher de manière indépendante de l'exécutable.
Donc tu ne peux pas utiliser tes classes de proj1 dans proj2. Cependant, si proj2 doit modifier, par exemple le titre de ta form1 qui se trouve dans proj1, il suffit que tu passes la référence de ta form1 dans ton proj2 (via le constructeur par exemple, ou via une propriété ou encore une méthode). Attention que, puisque ton proj2 ne référence pas proj1, il ne connait pas la classe Form1. Tu devras donc utiliser sa classe mère Form dans proj2.

Exemple

proj1 (référence proj1 et System.Windows.Forms) :

namespace proj1
{
public class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        proj2.MaClassDansLaDLL.ChangeTitre(this, "Nouveau titre");
    }
    ...
}
}

proj2 (référence System.Windows.Forms)

namespace proj2
{
public class MaClassDansLaDLL
{
    public static void ChangeTitre(Form formAModifier, string titre)
    {
        formAModifier.Text = titre;
    }
}
}

Mon exemple n'a pas d'intérêt autre que de te montrer les interactions entre dll et exe

Krimog :
while (!succeed = try()) ;
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
7 avril 2009 à 16:09
correction :
"proj1 (référence proj1 et System.Windows.Forms) :" => proj1 (référence proj2 et System.Windows.Forms) :
0
facbest Messages postés 47 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 7 janvier 2014
7 avril 2009 à 16:40
Je me suis planté en voulant référencer ma classe mère en réalité je veux juste appeler à partir de la classe mère la dll de façon à ce qu'elle exécute le code dans la dll mais la dll ne reconnait pas listView1 qui me fait une erreur voici le code de la dll:

using System;
using System.Data;
using System.Drawing;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Windows.Forms;




namespace algo_8
{



public class algo
{



public algo()
{

foreach (System.Windows.Forms.ListViewItem couleur1 in this.listView1.Items)
{

couleur1.UseItemStyleForSubItems = true;

string[] agf = { couleur1.Text };

for (int i = 0; i < agf.Length; i++)
{
if (couleur1.Selected)

couleur1.SubItems[i].ForeColor = Color.Red;



}
}
}

pour le reste du code c'est bon.

DE +

comment je peut appeler la dll à partir de mon click dans "essais"? j'en ai aucune idée.


merçi
0
Rejoignez-nous