2014-12-22 4 views
0

Я понимаю, что такой вопрос задавался здесь несколько раз, но я не могу понять, почему мой код не работает.Динамическое добавление панели

Я пытаюсь добавить панель только тогда, когда переменная int selected равна 0. Когда я запускаю свой код, я не вижу свою панель, как я мог бы ожидать.

Мой код ниже:

if (selected == 0) 
{  
    Panel p = new Panel(); 
    p.Height = 637; 
    p.Width = 449; 
    p.Location = new Point (269, 449); 
    p.BorderStyle = BorderStyle.FixedSingle; 
    p.Visible = true; 
    p.BackColor = Color.White; 
    p.AllowDrop = true; 
    p.Dock = DockStyle.Top; 
    p.Show(); 

    MessageBox.Show("Now we should see the Panel");     
} 

Что я делаю неправильно?

+3

Вы создали кастрюлю el в памяти, но не добавили его в вашу форму. –

ответ

1

Вы создаете Panel, но вы не добавляете его в какую-либо коллекцию элементов управления.

Вы можете сделать это, используя этот код:

if (selected == 0) 
{  
    Panel p = new Panel(); 
    p.Height = 637; 
    p.Width = 449; 
    p.Location = new Point (269, 449); 
    p.BorderStyle = BorderStyle.FixedSingle; 
    p.Visible = true; 
    p.BackColor = Color.White; 
    p.AllowDrop = true; 
    p.Dock = DockStyle.Top; 
    ///p.Show(); 
    this.Controls.Add(p); 

    MessageBox.Show("Now we should see the Panel");     
} 

Если вы хотите добавить некоторые элементы управления в Panel забудьте:

  • установить .Location относительно Panel
  • использования p.Controls.Add(yourNewControl)
+0

Спасибо всем, много! Это был мой первый раз, когда я использовал этот «объект», и теперь снова так много смысла! Благодаря! – kwyattm

3

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

Вам нужно добавить что-то вроде следующего:

this.Controls.Add(p); 

Таким образом, ваш общий код будет выглядеть примерно так:

if (selected == 1) 
{ 
    var p = new Panel(); 
    // Set some properties 
    this.Controls.Add(p); 
} 
+0

Это на самом деле делает вещи намного проще для меня, чтобы понять! Спасибо огромное! – kwyattm

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