Bonjour

Avec Delphi win32, je faisais souvent des boites de dialogues personnalisées dans laquelle j'utilisais des pointeurs sur des variables passées en paramètres du constructeur de mon formulaire. Avec C#, j'essaye de faire pareil mais ça ne fonctionne pas malgré l'utilisation de ref dans mes paramètres. Voilà un code exemple qui ne fonctionne pas:

Formulaire appelant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string s = "truc";
            Form2 f = new Form2(ref s);
            f.ShowDialog();
            MessageBox.Show(s);
        }
    }
Formualire appelé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
    public partial class Form2 : Form
    {
 
        string _nom;
 
        public Form2()
        {
            InitializeComponent();
        }
 
        public Form2(ref string nom)
            : this()
        {
            _nom = nom;
        }
 
        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            _nom = "toto";
        }
    }
MessageBox.Show(s); affiche toujours "truc" alors que je pensais qu'il afficherait "toto"

Question: Est-ce possible et ai-je simplement oublié un truc ?

Précision: Je viens de voir que ça fonctionne avec un objet mais pas avec un struct.

J-L