Как управлять списком внутри вкладки

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

Сначала я сделал небольшое приложение на .NET 4 C#, в главном окне которого был отдельный список, а теперь я хочу добавить элемент управления вкладками и переместить список на одну из вкладок, а список — на другую вкладку. поэтому я также могу представить Icons.

Мои проблемы, с которыми я сталкиваюсь, заключаются в следующем:

1) Теперь я динамически добавляю список в элемент управления вкладками следующим образом:

private ListBox listBoxMember = new ListBox();
public Form1()
{
  listBoxMember.Size = tab1.Size;
  tab1.Controls.Add(listBoxMember);
}

При запуске приложения кажется, что список не помещается внутри всей вкладки, и я вижу его границы внутри вкладки. Как я могу полностью разместить список на вкладке, чтобы пользователю казалось, что вкладка сам похож на список?

2) Перед моим изменением я сделал контекстное меню, которое активировалось событием нажатия кнопки мыши в списке при щелчке правой кнопкой мыши. Теперь после добавления списка внутри вкладки меню не открывается при щелчке мышью. Как я могу использовать контекстное меню, которое я сделал, и использовать его так же, как я делал, когда список был автономным элементом управления?


person Yonatan Nir    schedule 22.05.2013    source источник


Ответы (1)


Чтобы заполнить вкладку своим ListBox, используйте свойство Fill.

listBoxMember.Dock = DockStyle.Fill;

Кроме того, поскольку теперь вы создаете ListBox динамически, вам также необходимо динамически установить ContextMenu.

listBoxMember.ContextMenu = myContextMenu;

Также обязательно дайте listBoxMember имя, чтобы его можно было найти в коллекции tab1.Controls.

listBoxMember.Name = "listBoxMember";
tab1.Controls["listBoxMember"];
person Robert Aguilar    schedule 22.05.2013
comment
Я попытался сделать список статическим и просто нарисовал его внутри вкладки и изменил свойство стыковки на заполнение, и оно выглядит лучше, но все еще не заполняет его правильно. Вы все еще можете видеть границы списка, и это выглядит как рамка внутри рамки... - person Yonatan Nir; 23.05.2013
comment
Я думаю, что вы видите отступы на самой вкладке. Установите tab1.Padding = 0 и посмотрите, подходит ли вам это. - person Robert Aguilar; 23.05.2013
comment
Это не помогло. Я попытался изменить отступы и поля, но все же то, что я вижу, - это границы списка, когда я рисую его внутри вкладки. - person Yonatan Nir; 23.05.2013
comment
Возможно, вам следует добавить элемент управления на TabPage: tab.TabPages[0].Controls.Add(..) - person Jens Kloster; 23.05.2013
comment
@Robert Aguilar Я отредактировал ваш ответ строкой, которая решила проблему, о которой я вам говорил. - person Yonatan Nir; 24.05.2013