2009-08-19 3 views

risposta

7

Sebbene i controlli vengano visualizzati in un contenitore (come TabControl), sono tutti definiti nel modulo, quindi non è necessario accedervi tramite il contenitore.

Invece di:


tablControl1.TabPages[0].MyContainedControl... 

Semplicemente digita:


MyContainedControl... 
+2

Oh lol. Sei geniale tu. Grazie. : D –

7

A meno che non hai impostato GenerateMember false sulla casella di immagine o si sta costruendo il form in modo dinamico si dovrebbe essere in grado di fare riferimento a la casella immagine con il suo nome:

pictureBox1.ImageLocation = "..."; 

In caso contrario, assumendo la foto e box è il primo controllo nella prima scheda è possibile utilizzare la collezione Controls:

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

Se sai che c'è esattamente una casella di immagine da qualche parte, ma non siete sicuri di quale pagina è su o dove in quella pagina è possibile utilizzare Linq:

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