OVH Cloud OVH Cloud

Une fenêtre peut-elle renvoyer une valeur ?

5 réponses
Avatar
digging
Ma question est peut être triviale, mais bon : Est-ce qu'une fenêtre
peut renvoyer une valeur ou un objet qlcq en se comportant comme une
fonction ? Ce qui permettrait d'écrire un code dans le genre :
ObjetType obj = new ObjetType();
obj = FenetreAppellee(int a, string str, int rang)
Dans ma fenêtre appelée, je fais tout un tas de calculs et en cliquant
Ok je renvoie quelque chose !

--
- concepteur ensemblier -

5 réponses

Avatar
Zoury
Salut Digging!

Si tu veux qu'une fenêtre agisse comme une fonction, le mieux est de créer
une fonction qui s'occupe de d'afficher la fenêtre et de retourner son
résultat.

On appelle ça une boîte de dialogue. :O)

Voici un exemple que j'avais en VB6.. le fonctionnement reste le même .NET.
http://groups.google.com/groups?selm=O3w9Ws5rDHA.3492%40TK2MSFTNGP11.phx.gbl

--
Cordialement
Yanick
MVP pour Visual Basic
"digging" a écrit dans le message de
news:
Ma question est peut être triviale, mais bon : Est-ce qu'une fenêtre
peut renvoyer une valeur ou un objet qlcq en se comportant comme une
fonction ? Ce qui permettrait d'écrire un code dans le genre :
ObjetType obj = new ObjetType();
obj = FenetreAppellee(int a, string str, int rang)
Dans ma fenêtre appelée, je fais tout un tas de calculs et en cliquant
Ok je renvoie quelque chose !

--
- concepteur ensemblier -



Avatar
Julien
1. Tu crée une classe qui hérite de Form.
2. Tu crée des propriétés pour a,str,et rang
3. Tu crée une propriété Result pour le résultat de ton calcul, qui
utilise a,str et rang
4. Tu crée des contrôles dans ton Form qui permettent de modifier a,str,
et rang
5. Tu ajoutes des boutons ok et annuler à ton Form, en initialisant leur
propriété DialogResult à DialogResult.OK et DialogResult.Cancel.
5. Tu appele ShowDialog() sur ton Form
6. ShowDialog retourne sun DialogResult correspondant au bouton appuyé.
7. Si le résultat est DialogResult.OK, ton calcul est dans la propriété
Result.

Tu peux aussi ajouter une méthode statique à ton Form, qui te renvoie
directement une valeur, après avoir lancé le formulaire (une fois les étapes
précédentes accompiles):
public class MyForm : Form
{
/* ...
Les étapes 1 à 7
*/

// Tu peux remplacer object par le type de la valeur de ton calcul
public static object CalculerValeur()
{
MyForm m = new MyForm();
DialogResult dr = m.ShowDialog();
if (dr == DialogResult.OK) // l'utilisateur à validé
return m.Result; // on renvoie la valeur calculée
else
return null; // si le type retour est un type de base, tu ne peux
pas mettre null.
// tu peux alors déclencher une exception à la
place, ou renvoyer
// une valeur non utilisée
}
}

Voila, j'espère avoir répondu à ta question.

"digging" a écrit :

Ma question est peut être triviale, mais bon : Est-ce qu'une fenêtre
peut renvoyer une valeur ou un objet qlcq en se comportant comme une
fonction ? Ce qui permettrait d'écrire un code dans le genre :
ObjetType obj = new ObjetType();
obj = FenetreAppellee(int a, string str, int rang)
Dans ma fenêtre appelée, je fais tout un tas de calculs et en cliquant
Ok je renvoie quelque chose !

--
- concepteur ensemblier -




Avatar
digging
Merçi pour toutes ces réponses.

--
- concepteur ensemblier -
Avatar
André Fereau
Autre façon de voir les choses : envoyer à la fenêtre un objet qu'elle
mettra à jour.

AFer92

"digging" a écrit dans le message de news:

Merçi pour toutes ces réponses.

--
- concepteur ensemblier -



Avatar
digging
André Fereau avait énoncé :
Autre façon de voir les choses : envoyer à la fenêtre un objet qu'elle
mettra à jour.

AFer92

"digging" a écrit dans le message de news:

Merçi pour toutes ces réponses.

--
- concepteur ensemblier -






C'est ce j'ai fini par comprendre ! Des objets, rien que des objets.
En fait cela fait parti des réponses canoniques que le forum devrait
tenir à disposition des débutants en CSharp. Dès qu'on a compris que
CSharp et ses cousins ne comprennent que des objets, on ne cherche plus
à imposer à une Forms une chaine ou autre variable. Ca paraît évident,
mais cela ne l'est pas du tout ! On a du pal à ns défaire de la logique
procédurale.
C'est bon, j'ai compris !

--
- concepteur ensemblier -