Получить элементы управления в tabcontrol - PullRequest
0 голосов
/ 08 января 2010

Как добраться до элементов управления в tabcontrol, я хочу раскрасить все текстовые поля в цвет с помощью простого метода foreach:

           foreach (Control c in this.Controls)
           {
//btw I get the next error at this line: System.Windows.Forms.TabControl' is a 'type', which is not valid in the given context  
              if (c == System.Windows.Forms.TabControl)
              {
                 c.BackColor = Color.FromArgb(240, 240, 240);
              }
           }

           for (int i = 0; i < this.Controls.Count; i++)
           {
              if (this.Controls[i].GetType().ToString() == "System.Windows.Forms.Textbox")
              {
                 this.Controls[i].BackColor = Color.FromArgb(240, 240, 240);
              }
           }

Может ли кто-нибудь помочь мне изменить один из двух кодов

Ответы [ 2 ]

1 голос
/ 08 января 2010

Вам нужно будет немного больше перемещаться по элементам управления, а операторы, которые вы ищете (чтобы устранить ошибку), это операторы is и as:

это: http://msdn.microsoft.com/en-us/library/scekt9xw(VS.71).aspx

как: http://msdn.microsoft.com/en-us/library/cscsdfbt(VS.71).aspx

foreach (Control c in this.Controls)
{
    TabControl tabControl = c as TabControl;
    if (tabControl != null)
    {
        foreach (TabPage page in tabControl.TabPages)
        {
            foreach (Control innerControl in page.Controls)
            {
                if (innerControl is TextBox)
                {
                    innerControl.BackColor = Color.FromArgb(240, 240, 240);
                }
            }                        
        }
    }
}
0 голосов
/ 08 января 2010
          if (c == System.Windows.Forms.TabControl)
          {
             c.BackColor = Color.FromArgb(240, 240, 240);
          }

Можно сделать как

TabControl tc = c as TabControl;
if(tc != null)
{
   tc.BackColor = Color.FromArgb(240, 240, 240);
}
...