Problème Références d'une WebForm [Résolu]

oximoron 149 Messages postés mercredi 23 juillet 2003Date d'inscription 30 janvier 2009 Dernière intervention - 9 févr. 2005 à 17:49 - Dernière réponse : jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention
- 10 févr. 2005 à 03:39
Bonjour,
J'ai un petit problème en asp.net (c#), j'ai une classe qui gère une ligne (c'est un exemple) que voici :

class CMaLigne
{
private int m_nX1; private int m_nY1;
private int m_nX2; private int m_nY2;

public CMaLigne();
{
m_nX1=1; m_nY1=1; m_nX2=100; m_nY2=100;
}
public TestTailleImage()
{
//l'image est la zone ou je veux dessiner
int nLongImg=Convert.ToInt16(Image1.Width.Value);
int nLongImg=Convert.ToInt16(Image1.Height.Value);
}
}

Voila ca ne marche pas quand je veut recupérer le taille de mon image, Image1 n'est pas reconnu dans la classe mais si je le met par exemple dans l'événement OnLoad de la page, ca marche. J'ai une erreur à la compilation qui parle d'une mauvaise réference.

WebForm1.Image1.Width.Value ne marche pas nont plus, je ne sias plus quoi faire.
Si quelqu'un peut m'aider à résoudre ce petit problème. Merci d'avance.

oximoron
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 10 févr. 2005 à 00:41
3
Merci
C'est normal qu'il y ait une erreur, Image1 est déclaré nul part en
plus quel est le type de TestTailleImage ?elle sert à quoi cette
fonction ? elle t'initialie deux variables et puis hop, terminé j'espere plutot que tu n'as pas mis la fin du code



Pour arriver à recuperer Image1 sans le passer en paramètre il faudrais
utiliser la reflection, et encore je suis pas sur que ce soit possible.
Si tu veux te servir de Image1 dans ton code, il faut le passer, soit
par reference si tu veux le modifier soit par valeur si tu veux juste
une copie (ByRef ou Byval en VB en C# aucune idée)



donc fait un truc comme ca.



class CMaLigne

{

private Point m_n1;

private Point m_n2;

private ImageButton Image1;



public CMaLigne(ImageButton image1)

{

Image1 = image1;

m_n1.X 1; m_n1.Y 1 ;

m_n2.X 100 ; m_n2.Y 100;

}

public void TestTailleImage()

{ //l'image est la zone ou je veux dessiner

int nLongImg=Convert.ToInt16(Image1.Width.Value);

int nHautImg=Convert.ToInt16(Image1.Height.Value);

}

}



J'ai pris la liberté de remplacer tes quatres int par deux Point, ce type la est fait pour ce genre de chose


<hr>

Cyril - http://Hoshimi.CodeS-SourceS.fr

Merci jesusonline 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de jesusonline
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 9 févr. 2005 à 21:20
0
Merci
Je comprend ton erreur, mais pour te l'expliquer et resoudre le problème j'aurais besoin de plus d'info sur ton code.



En gros cela vient de la structure des pages, si tu construit ta classe
dans le page_init, c'est evident que ca plante, car le controle sera
pas encore instancié, par contre dans le page_load il n'y aura pas
d'erreur car ton image existera.

<hr>

Cyril - http://Hoshimi.CodeS-SourceS.fr
Commenter la réponse de jesusonline
oximoron 149 Messages postés mercredi 23 juillet 2003Date d'inscription 30 janvier 2009 Dernière intervention - 10 févr. 2005 à 00:14
0
Merci
Déjà merci de m'avoir répondu. Donc voila mon code avec un peu plus de détail : (et avec quelques fautes de frappes en moins...) J'ai essayé de mettre ma classe à plusieurs endroits, et c'est toujours pareil ...


using System;
...

namespace MonProjet
{

public
class WebForm1 : System.Web.UI.Page
{

protected System.Web.UI.WebControls.ImageButton Image1;


private
void Page_Load(
object sender, System.EventArgs e)
{
// Placer ici le code utilisateur pour initialiser la page
}

#region Web Form Designer generated code


override
protected
void OnInit(EventArgs e)
{
// CODEGEN : Cet appel est requis par le Concepteur Web Form ASP.NET.
InitializeComponent();

base.OnInit(e);
}

private
void InitializeComponent()
{

this.Image1.Click +=
new System.Web.UI.ImageClickEventHandler(
this.Image1_Click);

this.Load +=
new System.EventHandler(
this.Page_Load);
}

#endregion

class CMaLigne
{

private
int m_nX1;
private
int m_nY1;

private
int m_nX2;
private
int m_nY2;

public CMaLigne()
{
m_nX1=1; m_nY1=1; m_nX2=100; m_nY2=100;
}

public TestTailleImage()
{
//l'image est la zone ou je veux dessiner
int nLongImg=Convert.ToInt16(Image1.Width.Value);

int nHautImg=Convert.ToInt16(Image1.Height.Value);
}
}

private
void Image1_Click(
object sender, System.EventArgs e)
{ //ici ca marche

int nLongImg=Convert.ToInt16(Image1.Width.Value);

int nHautImg=Convert.ToInt16(Image1.Height.Value);
}
}
}



Merci encore.
oximoron
Commenter la réponse de oximoron
oximoron 149 Messages postés mercredi 23 juillet 2003Date d'inscription 30 janvier 2009 Dernière intervention - 10 févr. 2005 à 01:52
0
Merci
Merci, ca marche enfin, j'avais pas pensé à passer les contrôles en paramètres et mes toutes petites notions de MFC m'on embrouilé car là, on récupère un pointeur sur la feuille pour ecrire dessus... bref ca marche mais (ce n'est pas mon cas ) si on à plein de contrôles faudra passer plein de contrôles en paramètres ? Ca risque d'être long non ?
Sinon, pour ma fonction bien sur qu'elle fait autre chose mais je ne voulais pas mettre des lignes de codes fonctionnelles. Pour la class point tu as parfaitment raison, je l' avais au début mais je l'ai supprimé pour bien identifier mon (ex)problème, et c'est aussi cette simplificattion qui m'a fait oublié le petit void devant TestTailleImage().

Je te remercie vivement pour cette aide prècise est rapide, Merci beaucoup.
oximoron
Commenter la réponse de oximoron
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 10 févr. 2005 à 03:39
0
Merci
oui si tu as plein de controles tu devrais en théorie passer tout les controles



mais dans ce cas la solution est carrement de passer la page en paramètre

<hr>

Cyril - http://Hoshimi.CodeS-SourceS.fr
Commenter la réponse de jesusonline

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.