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

Я пытаюсь добавить панель только тогда, когда переменная 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");                
}

Что я делаю не так?

0
kwyattm 23 Дек 2014 в 01:02
3
Вы создали панель в памяти, но не добавили ее в форму.
 – 
Tien Dinh
23 Дек 2014 в 01:05

3 ответа

Лучший ответ

Вы создаете 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)
1
tezzo 23 Дек 2014 в 12:06
Большое спасибо всем вам!! Это был мой первый раз, когда я использовал «этот» объект, и теперь так много вещей снова имеют смысл! Спасибо!
 – 
kwyattm
23 Дек 2014 в 17:00

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

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

this.Controls.Add(p);

Итак, ваш общий код будет примерно таким:

if (selected == 1)
{
  var p = new Panel();
  // Set some properties
  this.Controls.Add(p);
}
3
Cameron 23 Дек 2014 в 01:05
Это на самом деле делает вещи намного проще для меня, чтобы понять! Большое спасибо!
 – 
kwyattm
9 Янв 2015 в 17:40

Вам нужно добавить свою панель в родительский элемент управления:

this.Controls.Add(panel);

Я думаю, вам следует прочитать этот Как программно добавлять элементы управления в формы Windows во время выполнения с помощью Visual C #

3
Jack1987 23 Дек 2014 в 01:14