Visual studio-TabControl.TabPages.Вставка не работает
вот мой код:
public MainForm()
{
InitializeComponent();
MyServiceSettings obj = (MyServiceSettings)ConfigurationManager.GetSection("MyServiceSettings");
foreach (MyServiceConfigElement service in obj.Services)
CreateServiceControl(service);
}
private void CreateServiceControl(MyServiceConfigElement service)
{
TabPage tp = new TabPage(service.Name);
tabControl1.TabPages.Insert(0, tp);
//tabControl1.TabPages.Add(tp);
tabControl1.Refresh();
}
в двух словах, он читает раздел в файле конфигурации и создает вкладку для каждого элемента в разделе.
у меня уже есть одна статическая страница, созданная во время разработки. Я хочу, чтобы динамические созданные вкладки были вставлены перед этой статической вкладкой.
запуск этого кода, tabcontrol показывает только статическую страницу табуляции.
Если я сделаю это изменить:
private void CreateServiceControl(SoftInfoServiceConfigElement service)
{
TabPage tp = new TabPage(service.Name);
//tabControl1.TabPages.Insert(1, tp);
tabControl1.TabPages.Add(tp);
tabControl1.Refresh();
}
С помощью метода Add отображаются все страницы. но я не получай приказ, который я хочу.
есть ли что-то, что я не понимаю с помощью метода Insert? Почему это работает?
2 ответов
есть комментарий социальная.в MSDN - хотя я не мог найти ничего подобного в документации:
дескриптор TabControl должен быть создан для работы метода Insert
попробуйте упомянутый код
IntPtr h = this.tabControl1.Handle;
перед тем, как цикл над вашими услугами
вы передаете тот же индекс в Insert()
метод. Если вы хотите просто увеличить, это должно работать:
// ...
int i = 0;
foreach (MyServiceConfigElement service in obj.Services)
CreateServiceControl(service, i++);
// ...
private void CreateServiceControl(MyServiceConfigElement service, int i)
{
TabPage tp = new TabPage(service.Name);
tabControl1.TabPages.Insert(i, tp);
// ...
}