Bonjour,

Programmeur C et C++ j'ai décidé d'essayer le C# mais certaines choses m'échappent encore.

J'ai une application travaillant sur des nombres dans différentes bases. Un membre donnée de la classe Form1 nommé m_base contient la base actuellement utilisée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
    public partial class Form1 : Form
    {
        public uint m_base; //base utilisée
[...cut...]
Sur ma form principale, j'ai une editbox que j'ai subclassée, de façon à ce que suivant la base actuellement utilisée, l'utilisateur n'entre pas n'importe quoi. Par exemple, si nous sommes en base 2, l'utilisateur ne pourra enter que 0 ou 1 (de 0 à 9 en base 10, etc.).

Ma classe de subclassing de l'editbox se nomme SubClassTextBox :

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
 
    public class SubClassTextBox : TextBox
    {
        private const int  WM_CHAR = 0x102;
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_CHAR:
                    // ? comment obtenir m_base de form1 ?                   
                    if (form1.m_base == 2)//base binaire
                    {
                        if (m.WParam.ToInt32() >= 0x30 && m.WParam.ToInt32() <= 0x31)
                            base.WndProc(ref m);                      
                        else
                            break;
                    }
[...CUT...]
Dans cette classe, je dois connaitre la valeur de m_base afin de faire le traitement désiré.

Mais comment obtenir la valeur de form1.m_base dans ma classe SubClassTextBox ?

Je ne pense pas pouvoir passer de valeur à WndProc (dans ce cas là , je passais une ref de Form1)...

En C++, j'aurais fait une fonction friend mais en C# cela ne semble pas exister...

Y'a t'il une solution ?

En vous remerciant, et je suis désolé si la question est triviale mais je débute en C#.