Добавление и удаление вкладок во время выполнения в C # - PullRequest
1 голос
/ 26 апреля 2009

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

private void addPerson(string name)
{
  TabPage tmp = new TabPage();
  ListView tmpList = new ListView();
  Button tmpButton = new Button();
  this.SuspendLayout();
  this.tabFrame.SuspendLayout();
  tmp.SuspendLayout();
  tmpList.SuspendLayout();
  tmpButton.SuspendLayout();
  ...
  //build the controll itself
  tmp.Controls.Add(tmpButton);
  tmp.Controls.Add(tmpList);
  tmp.Location = new System.Drawing.Point(4, 22);
  tmp.Name = name.Replace(' ', '_');
  tmp.Padding = new System.Windows.Forms.Padding(3);
  tmp.Size = new System.Drawing.Size(284, 240);
  tmp.TabIndex = 3;
  tmp.Text = name;
  tmp.UseVisualStyleBackColor = true;
  //add it to frame
  this.tabFrame.Controls.Add(tmp);
  tmpButton.ResumeLayout(true);
  tmpList.ResumeLayout(true);
  tmp.ResumeLayout(true);
  this.tabFrame.ResumeLayout(true);
  this.ResumeLayout(true);
{

Имя будет в форме «Скотт Чемберлен», поэтому я убираю пробелы и использую подчеркивание для поля имени. Я могу добавить вкладки отлично, они отображаются правильно отформатированы, однако, когда я пытаюсь удалить вкладку с помощью кода:

private void removePerson(string name)
{
  this.SuspendLayout();
  this.tabFrame.SuspendLayout();
  this.tabFrame.Controls.RemoveByKey(name.Replace(' ', '_'));
  this.tabFrame.ResumeLayout(true);
  this.ResumeLayout(true);
}

Вкладка не исчезает из моей программы. Чего мне не хватает, чтобы удалить вкладку?

Ответы [ 2 ]

4 голосов
/ 26 апреля 2009

alt text
(источник: codinghorror.com )

Создание простого TabPage с определенным Name и добавление его в Controls или TabPages работает, и то же самое происходит при удалении его с помощью RemoveByKey в Controls и TabPages.

Есть ли какой-нибудь код, который позже может изменить имя?

1 голос
/ 26 апреля 2009

Используйте tabFrame.TabPages вместо tabFrame.Controls для операций Add () и RemoveByKey ().

TabPages - более конкретная версия Controls, и если такая ситуация возникает, вам лучше использовать более специализированную опцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...