OVH Cloud OVH Cloud

pb de base

9 réponses
Avatar
Timber
Bon voila j'ai tout : le Visual Studio qui plait bien, la super becane, le
C# pour les nuls etc.

Je veux pouvoir incrementer x affiché dans mon "Label1" lorsque je clique
sur mon bouton "Button1" sans passer par un systeme de fichiers
lecture/ecriture. Pour l'instant ca va pas bien loin (0).

C'est quand meme pas difficile!... mais comment faire?

Help

---------



private void Button1_Click(object sender, System.EventArgs e)

{

int x=0; /* pb*/

Label1.Text = x.ToString();

x++;

}

9 réponses

Avatar
Paul Bacelar
C'est quand même pas difficile de gerer la durée de vie des variables ;-)
class toto{
int m_x=0;
private void Button1_Click(object sender, System.EventArgs e)
{
m_x++;
Label1.Text = m_x.ToString();
}
}

Et ne pas utiliser de membre intermédiaire, c'est encore mieux ;-)
private void Button1_Click(object sender, System.EventArgs e)
{
try{
int x = int.Parse(Label1.Text);
x++;
Label1.Text = x.ToString();
}
catch(Exception e){
}
}
--
Paul Bacelar

"Timber" wrote in message
news:
Bon voila j'ai tout : le Visual Studio qui plait bien, la super becane, le
C# pour les nuls etc.

Je veux pouvoir incrementer x affiché dans mon "Label1" lorsque je clique
sur mon bouton "Button1" sans passer par un systeme de fichiers
lecture/ecriture. Pour l'instant ca va pas bien loin (0).

C'est quand meme pas difficile!... mais comment faire?

Help

---------



private void Button1_Click(object sender, System.EventArgs e)

{

int x=0; /* pb*/

Label1.Text = x.ToString();

x++;

}




Avatar
Timber
Merci c bien cool

"Paul Bacelar" wrote in message
news:
C'est quand même pas difficile de gerer la durée de vie des variables ;-)
class toto{
int m_x=0;
private void Button1_Click(object sender, System.EventArgs e)
{
m_x++;
Label1.Text = m_x.ToString();
}
}

Et ne pas utiliser de membre intermédiaire, c'est encore mieux ;-)
private void Button1_Click(object sender, System.EventArgs e)
{
try{
int x = int.Parse(Label1.Text);
x++;
Label1.Text = x.ToString();
}
catch(Exception e){
}
}
--
Paul Bacelar

"Timber" wrote in message
news:
Bon voila j'ai tout : le Visual Studio qui plait bien, la super becane,
le
C# pour les nuls etc.

Je veux pouvoir incrementer x affiché dans mon "Label1" lorsque je clique
sur mon bouton "Button1" sans passer par un systeme de fichiers
lecture/ecriture. Pour l'instant ca va pas bien loin (0).

C'est quand meme pas difficile!... mais comment faire?

Help

---------



private void Button1_Click(object sender, System.EventArgs e)

{

int x=0; /* pb*/

Label1.Text = x.ToString();

x++;

}








Avatar
Vincent Lascaux
> C'est quand même pas difficile de gerer la durée de vie des variables ;-)
class toto{
int m_x=0;
private void Button1_Click(object sender, System.EventArgs e)
{
m_x++;
Label1.Text = m_x.ToString();
}
}

Et ne pas utiliser de membre intermédiaire, c'est encore mieux ;-)
private void Button1_Click(object sender, System.EventArgs e)
{
try{
int x = int.Parse(Label1.Text);
x++;
Label1.Text = x.ToString();
}
catch(Exception e){
}
}



Moi je ne trouve pas que ca soit mieux. Le label est là pour afficher des
informations de la classe, pas pour en stocker.
Maintenant c'est sur que l'exemple est tellement minimaliste que ca change
pas grand chose...

--
Vincent
Avatar
CrazyHT[MVP.NET]
C'est quand meme pas difficile ???

Biensur une fois qu'on connait, mais evidement toi tu n'as jamais débuté.

De plus ta 2eme solution est pas top, le parse du label en Int est ine perte
de temps considerable. Avec un exemple en 2 lignes la difference ne se voit
pas, mais il est preferable de stocker une variable membre qui prend 2
octets en memoire que de parser a chaque fois un string en Int.

Comme quoi meme un exemple "pas difficile" peu amener à des erreurs.

Cordialement,
CrazyHT
"Paul Bacelar" a écrit dans le message
de news:
C'est quand même pas difficile de gerer la durée de vie des variables ;-)
class toto{
int m_x=0;
private void Button1_Click(object sender, System.EventArgs e)
{
m_x++;
Label1.Text = m_x.ToString();
}
}

Et ne pas utiliser de membre intermédiaire, c'est encore mieux ;-)
private void Button1_Click(object sender, System.EventArgs e)
{
try{
int x = int.Parse(Label1.Text);
x++;
Label1.Text = x.ToString();
}
catch(Exception e){
}
}
--
Paul Bacelar

"Timber" wrote in message
news:
Bon voila j'ai tout : le Visual Studio qui plait bien, la super becane,
le
C# pour les nuls etc.

Je veux pouvoir incrementer x affiché dans mon "Label1" lorsque je clique
sur mon bouton "Button1" sans passer par un systeme de fichiers
lecture/ecriture. Pour l'instant ca va pas bien loin (0).

C'est quand meme pas difficile!... mais comment faire?

Help

---------



private void Button1_Click(object sender, System.EventArgs e)

{

int x=0; /* pb*/

Label1.Text = x.ToString();

x++;

}








Avatar
Timber
Le second exemple avec l'affectation dans le label.Text fonctionne bien et
ca c'est bien cool . Par contre lorsque je fais fonctionner le premier:

int m_x=0;

private void Button1_Click(object sender, System.EventArgs e)

{

m_x++;

Label1.Text = m_x.ToString();

}

La variable ne va pas plus loin que "1" puisque m_x est reinitialise a 0 (je
suppose) a chaque click. Moi j'veux aller a 17... J'voudrais pas faire
boulet, meme si c'est trop tard.

Ou est ce que je la met ma variable si je veux eviter d'utiliser le
label.Text?

Merci encore

"CrazyHT[MVP.NET]" wrote in message
news:%
C'est quand meme pas difficile ???

Biensur une fois qu'on connait, mais evidement toi tu n'as jamais débuté.

De plus ta 2eme solution est pas top, le parse du label en Int est ine
perte de temps considerable. Avec un exemple en 2 lignes la difference ne
se voit pas, mais il est preferable de stocker une variable membre qui
prend 2 octets en memoire que de parser a chaque fois un string en Int.

Comme quoi meme un exemple "pas difficile" peu amener à des erreurs.

Cordialement,
CrazyHT
"Paul Bacelar" a écrit dans le message
de news:
C'est quand même pas difficile de gerer la durée de vie des variables ;-)
class toto{
int m_x=0;
private void Button1_Click(object sender, System.EventArgs e)
{
m_x++;
Label1.Text = m_x.ToString();
}
}

Et ne pas utiliser de membre intermédiaire, c'est encore mieux ;-)
private void Button1_Click(object sender, System.EventArgs e)
{
try{
int x = int.Parse(Label1.Text);
x++;
Label1.Text = x.ToString();
}
catch(Exception e){
}
}
--
Paul Bacelar

"Timber" wrote in message
news:
Bon voila j'ai tout : le Visual Studio qui plait bien, la super becane,
le
C# pour les nuls etc.

Je veux pouvoir incrementer x affiché dans mon "Label1" lorsque je
clique
sur mon bouton "Button1" sans passer par un systeme de fichiers
lecture/ecriture. Pour l'instant ca va pas bien loin (0).

C'est quand meme pas difficile!... mais comment faire?

Help

---------



private void Button1_Click(object sender, System.EventArgs e)

{

int x=0; /* pb*/

Label1.Text = x.ToString();

x++;

}












Avatar
Zazar
Bonsoir,

Le second exemple avec l'affectation dans le label.Text fonctionne bien et
ca c'est bien cool . Par contre lorsque je fais fonctionner le premier:

int m_x=0;

private void Button1_Click(object sender, System.EventArgs e)

{

m_x++;

Label1.Text = m_x.ToString();

}

La variable ne va pas plus loin que "1" puisque m_x est reinitialise a 0


(je
suppose) a chaque click. Moi j'veux aller a 17... J'voudrais pas faire
boulet, meme si c'est trop tard.



Je suppose que vous faîtes de l'ASP.NET (précisez-le dans votre question :
Paul Bacelar ne pouvait pas le deviner et il vous a donné une réponse
fonctionnant en windows form).

Ou est ce que je la met ma variable si je veux eviter d'utiliser le
label.Text?



En asp.net, les membres de votre feuille ne sont pas conservés
automatiquement d'une requête sur l'autre. Il existe de nombreuses méthodes
pour conserver l'état d'un objet d'une fois sur l'autre, je vous renvoie à
la MSDN pour voir quelles sont ces méthodes et quelles sont leurs
différences.
Dans votre cas, un ViewState (l'état est conservé tant que vous ne changez
pas de page) me paraît le plus indiqué, mais sans plus de précision sur ce
que vous désirez faire, je peux me tromper. Là encore, je vous renvoie à la
MSDN pour comprendre son fonctionnement.

--
Zazar
Avatar
Timber
Merci de preciser a ma place de quoi il s'agit. En effet c'est bien de
l'ASP.NET. Voila donc le voile levé sur cette mysterieuse non-conservation
de variable. Merci
Maintenant je vais me mettre a la lecture trepidante des aventures du
ViewState.

"Zazar" wrote in message
news:%23%23WXc%
Bonsoir,

Le second exemple avec l'affectation dans le label.Text fonctionne bien
et
ca c'est bien cool . Par contre lorsque je fais fonctionner le premier:

int m_x=0;

private void Button1_Click(object sender, System.EventArgs e)

{

m_x++;

Label1.Text = m_x.ToString();

}

La variable ne va pas plus loin que "1" puisque m_x est reinitialise a 0


(je
suppose) a chaque click. Moi j'veux aller a 17... J'voudrais pas faire
boulet, meme si c'est trop tard.



Je suppose que vous faîtes de l'ASP.NET (précisez-le dans votre question :
Paul Bacelar ne pouvait pas le deviner et il vous a donné une réponse
fonctionnant en windows form).

Ou est ce que je la met ma variable si je veux eviter d'utiliser le
label.Text?



En asp.net, les membres de votre feuille ne sont pas conservés
automatiquement d'une requête sur l'autre. Il existe de nombreuses
méthodes
pour conserver l'état d'un objet d'une fois sur l'autre, je vous renvoie à
la MSDN pour voir quelles sont ces méthodes et quelles sont leurs
différences.
Dans votre cas, un ViewState (l'état est conservé tant que vous ne changez
pas de page) me paraît le plus indiqué, mais sans plus de précision sur ce
que vous désirez faire, je peux me tromper. Là encore, je vous renvoie à
la
MSDN pour comprendre son fonctionnement.

--
Zazar




Avatar
Timber
Mais quel est l'interet de passer par ViewState alors que la conservation de
la variable peut etre assuree par le label1.Text?

"Timber" wrote in message
news:
Merci de preciser a ma place de quoi il s'agit. En effet c'est bien de
l'ASP.NET. Voila donc le voile levé sur cette mysterieuse non-conservation
de variable. Merci
Maintenant je vais me mettre a la lecture trepidante des aventures du
ViewState.

"Zazar" wrote in message
news:%23%23WXc%
Bonsoir,

Le second exemple avec l'affectation dans le label.Text fonctionne bien
et
ca c'est bien cool . Par contre lorsque je fais fonctionner le premier:

int m_x=0;

private void Button1_Click(object sender, System.EventArgs e)

{

m_x++;

Label1.Text = m_x.ToString();

}

La variable ne va pas plus loin que "1" puisque m_x est reinitialise a 0


(je
suppose) a chaque click. Moi j'veux aller a 17... J'voudrais pas faire
boulet, meme si c'est trop tard.



Je suppose que vous faîtes de l'ASP.NET (précisez-le dans votre question
:
Paul Bacelar ne pouvait pas le deviner et il vous a donné une réponse
fonctionnant en windows form).

Ou est ce que je la met ma variable si je veux eviter d'utiliser le
label.Text?



En asp.net, les membres de votre feuille ne sont pas conservés
automatiquement d'une requête sur l'autre. Il existe de nombreuses
méthodes
pour conserver l'état d'un objet d'une fois sur l'autre, je vous renvoie
à
la MSDN pour voir quelles sont ces méthodes et quelles sont leurs
différences.
Dans votre cas, un ViewState (l'état est conservé tant que vous ne
changez
pas de page) me paraît le plus indiqué, mais sans plus de précision sur
ce
que vous désirez faire, je peux me tromper. Là encore, je vous renvoie à
la
MSDN pour comprendre son fonctionnement.

--
Zazar








Avatar
Zazar
Bonsoir,

Mais quel est l'interet de passer par ViewState alors que la conservation
de
la variable peut etre assuree par le label1.Text?




Sur un exemple aussi simple la différence est moindre (en fait le label se
sert du viewstate pour conserver sa valeur).

Mais dans le général, on se sert du viewstate pour stocker des données, un
label ne pouvant stocker qu'une seule valeur et pas d'objet complexe (un
tableau ou une structure par exemple), il est inadapté à la conservation de
l'état.

De plus, si vous écrivez un contrôle, vous ne pouvez pas être sûr que le
label pourra conserver son état (exemple : la page parent a sa propriété
EnableViewState à false).

Enfin, centraliser le stockage des données a un intérêt : si vous vouliez
appliquer une opération (par exemple les signer pour vous assurer qu'elles
ne sont pas modifiées par le client) à toutes vos données, vous n'auriez à
le faire qu'à un endroit.

--

Zazar