Bonjour,
Depuis ma MainForm je lance un thread en lui passant le handle de celle-ci.
Mais je ne trouve pas le moyen depuis mon thread d'accéder aux contrôles de ma fenêtre principale.
Par exemple je voudrais accéder au bouton "BtnTest" qui se trouve dans le panel "PnlTest"
J'ai mis mon thread dans une classe
Pour lancer mon thread je fais ceci
Je lance ma classe depuis ma fenêtre principale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 ClassThreadTest _ClassThreadTest = new ClassThreadTest();
_ClassThreadTest.StartThreadTest(this);
et ma classe est construite ainsi
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
 
internal class ClassThreadTest 
{
   Thread ThModeTest;
   MainForm MainFormHandle ;
   public CancellationTokenSource _cancel;
   public void StartThreadTest(MainForm Parent)
   {
    MainFormHandle = Parent;
    ThModeTest= new Thread(LoopModeAuto);
    ThModeTest.Start();
   }
   private void LoopModeAuto()
   {
      while (!_cancel.IsCancellationRequested)
      {
         ...
      }
   }
}
Et à un moment donné j'ai besoin de modifier l'état Enable du contrôle qui se trouve dans ma fenêtre principale.
Je ne trouve pas le chemin pour y accéder du style : "MainFormHandle.PnlTest.BtnTest.Enable = true;"
J'ai aussi compris que j'allais avoir un problème d'accès inter-thread donc je pensais utiliser Invoke par exemple
MainFormHandle.PnlTest.BtnTest.Invoke(new EventHandler(delegate { MainFormHandle.PnlTest.BtnTest.Enable = true;}));

Merci pour votre aide