Comment accéder aux contrôles qui se trouvent dans un onglet TabControl?

C’est tout ce que j’ai jusqu’à présent.

tabControl1.TabPages[0].??? 

J’ai un PictureBox à l’intérieur de TabPage1 de mon TabControl.

Comment puis-je changer l’emplacement de l’image avec le code et pas le volet de propriétés?

Bien que les contrôles apparaissent à l’intérieur d’un conteneur (sous la forme d’un TabControl), ils sont tous définis dans le formulaire. Il n’est donc pas nécessaire d’y accéder via le conteneur.

Au lieu de:

 tablControl1.TabPages[0].MyContainedControl... 

Tapez simplement:

 MyContainedControl... 

Sauf si vous définissez GenerateMember sur false dans la zone d’image ou si vous créez le formulaire de manière dynamic, vous devriez pouvoir référencer la zone d’image par son nom:

 pictureBox1.ImageLocation = "..."; 

Sinon, en supposant que la zone d’image soit le premier contrôle de la première page à onglet, vous pouvez utiliser la collection Controls :

 var picBox = (PictureBox) tabControl1.TabPages[0].Controls[0]; picBox.ImageLocation = "..."; 

Si vous savez qu’il y a exactement une boîte à images quelque part mais que vous n’êtes pas sûr de la page ou de l’emplacement de cette page, vous pouvez utiliser Linq:

 var picBox = tabControl1.TabPages.Cast() .SelectMany(page => page.Controls.OfType()) .First(); picBox.ImageLocation = "...";