2009-07-17 7 views
0

Если я создать элемент управления на лету, как показано нижеРеферирование вновь созданного управления

private void button10_Click(object sender, EventArgs e) 
{ 
    CheckedListBox CheckedListBox1 = new CheckedListBox(); 
    CheckedListBox1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(224)), ((System.Byte)(192))); 
    CheckedListBox1.ItemHeight = 16; 
    CheckedListBox1.Location = new System.Drawing.Point(12, 313); 
    CheckedListBox1.Name = "CheckedListBox1"; 
    CheckedListBox1.Size = new System.Drawing.Size(168, 244); 
    CheckedListBox1.TabIndex = 0; 
    Controls.Add(CheckedListBox1); 

    Button button12 = new Button(); 
    button12.Location = new Point(900, 500); 
    button12.Size = new Size(75, 23); 
    button12.Click += new System.EventHandler(button12_Click); 
    button12.Name = "button12"; 
    button12.Text = "Toggle All"; 
    Controls.Add(button12); 
} 

, что это лучший способ, чтобы ссылаться на этот контроль с функцией вне локальной области видимости? было бы лучше создать статический класс, чтобы каким-то образом содержать ссылку на элемент управления, доступ к которому можно получить за пределами локальной области или есть функция findcontrol для winforms (я думаю, что findcontrol - это просто для Интернета).

я хочу

private void button12_Click(object sender, EventArgs e) 
{ 
    for (int i = 0; i <= (CheckedListBox1.Items.Count - 1); i++) 
    { 
     if (CheckedListBox1.GetItemCheckState(i) == CheckState.Checked) 
     { 
      CheckedListBox1.SetItemCheckState(i, CheckState.Indeterminate); 
     } 
     else if (CheckedListBox1.GetItemCheckState(i) == CheckState.Indeterminate) 
     { 
      CheckedListBox1.SetItemCheckState(i, CheckState.Checked); 
     } 
    } 
} 

, чтобы иметь возможность работать, но им будет неправильно из-за рамки? Просьба помочь новичку

благодаря

+0

, пожалуйста, проверьте свое форматирование, прежде чем задавать вопрос. – tanascius

+0

теперь исправлено –

+2

Да, потому что я исправил его ... – tanascius

ответ

1

Я предполагаю, что эти две функции button12_Click и button10_Click являются членами Из класса. В этом случае ваш должен сделать ваш CheckListBox1 и button12 членов класса From. Таким образом, button12_Click сможет ссылаться на созданные вами элементы управления.

public partial class Form1 : Form 
{ 
     CheckedListBox CheckedListBox1 = null; 
     Button button12 = null; 


     private void button10_Click(object sender, EventArgs e) 
     { 
     CheckedListBox1 = new CheckedListBox(); 
     CheckedListBox1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(224)), ((System.Byte)(192))); 
     CheckedListBox1.ItemHeight = 16; 
     CheckedListBox1.Location = new System.Drawing.Point(12, 313); 
     CheckedListBox1.Name = "CheckedListBox1"; 
     CheckedListBox1.Size = new System.Drawing.Size(168, 244); 
     CheckedListBox1.TabIndex = 0; 
     Controls.Add(CheckedListBox1); 

     button12 = new Button(); 
     button12.Location = new Point(900, 500); 
     button12.Size = new Size(75, 23); 
     button12.Click += new System.EventHandler(button12_Click); 
     button12.Name = "button12"; 
     button12.Text = "Toggle All"; 
     Controls.Add(button12); 
    } 

    private void button12_Click(object sender, EventArgs e) 
    { 
     for (int i = 0; i <= (CheckedListBox1.Items.Count - 1); i++) 
     { 
      if (CheckedListBox1.GetItemCheckState(i) == CheckState.Checked) 
      { 
       CheckedListBox1.SetItemCheckState(i, CheckState.Indeterminate); 
      } 
      else if (CheckedListBox1.GetItemCheckState(i) == CheckState.Indeterminate) 
      { 
       CheckedListBox1.SetItemCheckState(i, CheckState.Checked); 
      } 
     } 
    } 

} 
+0

спасибо mate кажется настолько простым, иногда вам просто нужно что-то elses глаза - приветствия – Gazza

+0

приветствуются .. –

0

Когда есть только один CheckedListBox сделать это переменная класса. Но когда у вас всегда только один CheckedListBox - почему вы создаете его динамически?

0

Если вы добавляете элементы управления в коллекцию элементов управления, просто загляните туда. Если вы знаете индекс элемента управления, вы можете ссылаться на него таким образом. если вы добавляете элемент управления в какую-либо коллекцию Control контейнера (скажем, панель), найдите там

Смежные вопросы