Добавление динамических вкладок в элемент управления вкладками

У меня есть следующий код

Это должно добавить вкладки к элементу управления вкладками... проблема в том, что я не могу увидеть изменения, если редактирую размер шрифта панели и т. д.

Также есть ли способ просматривать или редактировать с помощью визуального дизайнера динамические объекты? Я знаю, что это сложно, потому что он не статический, но, поскольку объект объявлен, мне было интересно, есть ли способ установить или просмотреть свойства, используя его, вместо того, чтобы просматривать десятки свойств в зависимости от того, сколько объектов вы создаете. Что мне не хватает?

Заранее спасибо !

private void AddDynamicTabs()
{
    List<Zonas> ZonasList = Database.GetZonasFromDatabase();
    Console.WriteLine("CANTIDAD DE ZONAS " + ZonasList.Count);

    TAB_ZONAS.TabPages.Clear();
    // Calculate tab width based on the width of Panel_mesas and number of zones
    int tabWidth = Panel_mesas.Width / ZonasList.Count;


    for (int i = 0; i < ZonasList.Count; i++)
    {
        Zonas zonas = ZonasList[i];

        // Create a new tab page
        TabPage tabPage = new TabPage(zonas.NOMBRE);
        tabPage.Name = $"tabPage_{zonas.NOMBRE}";
        tabPage1.Text = $"tabPage_{ zonas.NOMBRE}";

        // Set properties for the tab page
        tabPage.BackColor = Color.LightGray;
        tabPage.ForeColor = Color.Black;
        tabPage.Font = new Font("Arial", 25, FontStyle.Bold);
        tabPage.Padding = new Padding(10); // Padding around the content of the tab page
        tabPage.Margin = new Padding(5); // Margin around the entire tab page
        tabPage.Enabled = true; // Enable or disable the tab page
        tabPage.UseVisualStyleBackColor = true; // Use the default visual style for the tab page
        tabPage.AutoScroll = false; // Enable auto-scrolling for the tab page content
        tabPage.RightToLeft = RightToLeft.No; // Set the text direction for right-to-left languages
        tabPage.Tag = null; // Set an object that contains data about the tab page
        tabPage.ToolTipText = "Tooltip for the tab page"; // Set a tooltip for the tab page
        tabPage.Width = 1000;
        tabPage.Height = 4100;

        // Optionally, set other properties
        // Example:
        // tabPage.BackgroundImage = yourImage;
        // tabPage.BackgroundImageLayout = ImageLayout.Stretch;

        // Add the tab page to the TAB_ZONAS TabControl
        TAB_ZONAS.TabPages.Add(tabPage);

    }
}

Вы используете Forms или Windows Forms? Я думаю, вы используете формы. TabPage — это элемент управления, и вы можете использовать Find, чтобы получить дочерние элементы управления. Мне не нравится использовать Find, потому что он медленный. Обычно подобная проблема возникает из-за добавления элементов управления непосредственно в родительский элемент управления. Автоматический выбор размера работает не очень хорошо. Решение состоит в том, чтобы добавить панель к элементу управления TabPage, а затем добавить дочерние элементы управления на панель. Для панели автоматический размер будет работать, а для TabPage автоматический размер не работает.

jdweng 30.06.2024 01:27

Можете ли вы указать мне правильное направление? Пример кода или что-то в этом роде? Еще я заметил, что создаю вкладку вместо использования ранее правильной... выложу исправленный код

Juan Manuel Sanchez Cuellar 30.06.2024 01:33

Попробуйте Panel Panel = new Panel(); tabPage.Controls.Add(панель). Затем замените в своем коде tabPage на панель.

jdweng 30.06.2024 01:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот код работает:

private void AddDynamicTabs()
{
    List<Zonas> ZonasList = Database.GetZonasFromDatabase();

    // Create TabControl
    TAB_ZONAS = new TabControl(); // Assign TAB_ZONAS here
    TAB_ZONAS.Size = new System.Drawing.Size(1112, 961);
    TAB_ZONAS.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    TAB_ZONAS.SizeMode = TabSizeMode.Fixed;

    // Calculate and set ItemSize based on ZonasList count
    int tabWidth = TAB_ZONAS.Width / ZonasList.Count;
    TAB_ZONAS.ItemSize = new System.Drawing.Size(tabWidth - 10, 150);

    TAB_ZONAS.Location = new System.Drawing.Point(654, 12);
    TAB_ZONAS.Name = "TAB_ZONAS";
    TAB_ZONAS.SelectedIndex = 0;

    // Add TabPages dynamically based on the list of zones
    foreach (Zonas zonas in ZonasList)
    {
        TabPage tabPage = new TabPage(zonas.NOMBRE)
        {
            ForeColor = System.Drawing.SystemColors.ControlText,
            Location = new System.Drawing.Point(4, 79),
            Name = zonas.NOMBRE, // Unique name for each tab page
            Size = new System.Drawing.Size(1104, 878),
            Text = zonas.NOMBRE, // Set the tab text to the name from the list
            UseVisualStyleBackColor = true
        };

        TAB_ZONAS.TabPages.Add(tabPage);
    }

    // Add the TabControl to the form
    this.Controls.Add(TAB_ZONAS);
}

Другие вопросы по теме