facbest
Messages postés47Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention 7 janvier 2014
-
7 avril 2009 à 11:46
facbest
Messages postés47Date d'inscriptionlundi 19 mars 2007StatutMembreDerniè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é.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 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?
facbest
Messages postés47Date d'inscriptionlundi 19 mars 2007StatutMembreDerniè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 ?...
facbest
Messages postés47Date d'inscriptionlundi 19 mars 2007StatutMembreDerniè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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 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
facbest
Messages postés47Date d'inscriptionlundi 19 mars 2007StatutMembreDerniè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.