У меня есть следующий код
Это должно добавить вкладки к элементу управления вкладками... проблема в том, что я не могу увидеть изменения, если редактирую размер шрифта панели и т. д.
Также есть ли способ просматривать или редактировать с помощью визуального дизайнера динамические объекты? Я знаю, что это сложно, потому что он не статический, но, поскольку объект объявлен, мне было интересно, есть ли способ установить или просмотреть свойства, используя его, вместо того, чтобы просматривать десятки свойств в зависимости от того, сколько объектов вы создаете. Что мне не хватает?
Заранее спасибо !
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);
}
}
Можете ли вы указать мне правильное направление? Пример кода или что-то в этом роде? Еще я заметил, что создаю вкладку вместо использования ранее правильной... выложу исправленный код
Попробуйте Panel Panel = new Panel(); tabPage.Controls.Add(панель). Затем замените в своем коде tabPage на панель.
Этот код работает:
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);
}
Вы используете Forms или Windows Forms? Я думаю, вы используете формы. TabPage — это элемент управления, и вы можете использовать Find, чтобы получить дочерние элементы управления. Мне не нравится использовать Find, потому что он медленный. Обычно подобная проблема возникает из-за добавления элементов управления непосредственно в родительский элемент управления. Автоматический выбор размера работает не очень хорошо. Решение состоит в том, чтобы добавить панель к элементу управления TabPage, а затем добавить дочерние элементы управления на панель. Для панели автоматический размер будет работать, а для TabPage автоматический размер не работает.