Я написал программу, которая считывает объект .json и создает метки и некоторые элементы управления в трех TableLayoutPanels. Первые две таблицы находятся на странице 1 TabPanel, а последняя — на странице 2.
Проблема в следующем: ЕСЛИ в начале программы я автоматически добавляю элементы управления в таблицы ИЛИ если Я просматриваю страницу 2 и добавляю элементы управления вручную, последняя таблица не отображает добавленные элементы управления.
Я могу войти в консольный журнал, и там есть все элементы управления, но они просто не отображаются.
Таблица работает только ЕСЛИ Я нахожусь на странице 1 и добавляю элементы управления вручную. Во всех трех случаях код добавления элементов управления один и тот же. Просто он ведет себя по-разному, смотрю ли я на страницу 2 или нет, или запускается при запуске. Для меня это не имеет смысла.
Gif 1, как это должно работать: в данном случае я нахожусь на странице 1 и вручную загружаю файл json, чтобы добавить элементы управления.
Gif 2. Я открываю программу, и она автоматически загружает json и добавляет элементы управления. Элементы управления в LayoutTable на странице 2 не отображаются.
Gif 3 Я «просматриваю» таблицу на странице 2 и загружаю файл JSON. Элементы управления также не отображаются.
Я уже пробовал вызывать tablelayoutpanel.Refresh() или .Invalidade(), не помогло. Попробовал установить двойную буферизацию true и false, не работает.
ps: «добавление элементов управления вручную» означает, что я нажимаю кнопку, чтобы загрузить json, и элементы управления добавляются.Код, добавляющий элементы управления на панели:
LabelData labelData;
List publicZPLFields = new List();
List publicControls = new List();
List privateZPLFields = new List();
List privateControls = new List();
List privateDataControls = new List();
List dataMatrixFields = new List();
List dataMatrixControls = new List();
public void LoadLabelData(LabelData data)
{
#region clear lists and dispose controls
for (int i = 0; i < publicControls.Count; i++)
{
publicTablePanel.Controls.Remove(publicControls);
publicControls.Dispose();
}
publicControls.Clear();
for (int i = 0; i < privateControls.Count; i++)
{
privateTablePanel.Controls.Remove(privateControls);
privateControls.Dispose();
}
privateControls.Clear();
for (int i = 0; i < privateDataControls.Count; i++)
{
privateDataTablePanel.Controls.Remove(privateDataControls);
privateDataControls.Dispose();
}
privateDataControls.Clear();
dataMatrixControls.Clear();
#endregion
labelData = data;
publicZPLFields = data.LabelDataList.Where(d => !d.IsPrivate && d.ListMe).ToList();
privateZPLFields = data.LabelDataList.Where(d => d.IsPrivate && d.ListMe).ToList();
dataMatrixFields = data.LabelDataList.Where(d => d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH).ToList();
AnchorStyles a = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom;
Padding m = new Padding(1);
//adding the controls to the first table layout panel in the first page
int row = 1;
foreach (var d in publicZPLFields)
{
Label label = new Label();
label.Text = d.Name;
label.TextAlign = ContentAlignment.MiddleLeft;
publicTablePanel.Controls.Add(label, 0, row);
publicControls.Add(label);
switch (d.FieldType)
{
case FieldType.Text:
TextBox tb = new TextBox();
tb.Name = d.Name;
tb.Margin = m;
tb.Anchor = a;
tb.Text = d.defaultText;
tb.KeyPress += textBox_KeyPressed;
tb.TextChanged += updateZpl_TextChanged;
publicTablePanel.Controls.Add(tb, 1, row);
publicControls.Add(tb);
if(d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(tb);
break;
case FieldType.Date:
DateTimePicker dtp = new DateTimePicker();
dtp.Name = d.Name;
dtp.Margin = m;
dtp.Anchor = a;
dtp.Value = d.DateType == FieldDateType.TODAY ? DateTime.Today : d.defaultTime;
if(d.DateType == FieldDateType.TODAY)
dtp.Enabled = false;
publicTablePanel.Controls.Add(dtp, 1, row);
publicControls.Add(dtp);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(dtp);
break;
case FieldType.Serial:
NumericUpDown nud = new NumericUpDown();
nud.Name = d.Name;
nud.Margin = m;
nud.Anchor = a;
nud.Maximum = (int)Math.Pow(10, d.serialMax) - 1;
nud.Value = d.serialStart;
publicTablePanel.Controls.Add(nud, 1, row);
publicControls.Add(nud);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(nud);
break;
}
row++;
}
//adding controls to both "private" table layout panel, the one in the first page and the the one in the second page
row = 1;
foreach(var d in privateZPLFields)
{
Label label = new Label();
label.Text = d.Name;
label.TextAlign = ContentAlignment.MiddleLeft;
privateTablePanel.Controls.Add(label, 0, row);
privateControls.Add(label);
label = label.Clone();
privateDataTablePanel.Controls.Add(label, 0, row);
privateDataControls.Add(label);
switch (d.FieldType)
{
case FieldType.Text:
TextBox tb = new TextBox();
tb.Name = d.Name;
tb.Margin = m;
tb.Anchor = a;
tb.Text = d.defaultText;
tb.Enabled = false;
privateTablePanel.Controls.Add(tb, 1, row);
privateControls.Add(tb);
tb = tb.Clone();
tb.Enabled = true;
tb.KeyPress += textBox_KeyPressed;
tb.TextChanged += updateZpl_TextChanged;
privateDataTablePanel.Controls.Add(tb, 1, row);
privateDataControls.Add(tb);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(tb);
break;
case FieldType.Date:
DateTimePicker dtp = new DateTimePicker();
dtp.Name = d.Name;
dtp.Margin = m;
dtp.Anchor = a;
dtp.Value = d.DateType == FieldDateType.TODAY ? DateTime.Today : d.defaultTime;
dtp.Enabled = false;
privateTablePanel.Controls.Add(dtp, 1, row);
privateControls.Add(dtp);
dtp = dtp.Clone();
dtp.Enabled = d.DateType == FieldDateType.CUSTOM;
privateDataTablePanel.Controls.Add(dtp, 1, row);
privateDataControls.Add(dtp);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(dtp);
break;
case FieldType.Serial:
NumericUpDown nud = new NumericUpDown();
nud.Name = d.Name;
nud.Margin = m;
nud.Anchor = a;
nud.Maximum = (int)Math.Pow(10, d.serialMax) - 1;
nud.Value = d.serialStart;
nud.Enabled = false;
privateTablePanel.Controls.Add(nud, 1, row);
privateControls.Add(nud);
nud = nud.Clone();
nud.Enabled = true;
privateDataTablePanel.Controls.Add(nud, 1, row);
privateDataControls.Add(nud);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(nud);
break;
}
row++;
}
UpdateFinalZPL(labelData.sampleCode);
#region setup table layout panels
publicTablePanel.AutoScroll = true;
privateTablePanel.AutoScroll = true;
privateDataTablePanel.AutoScroll = true;
#endregion
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... r-at-the-s
Панель Tablelayout не отображает дочерние элементы управления при просмотре или в начале программы. ⇐ C#
Место общения программистов C#
1734004503
Anonymous
Я написал программу, которая считывает объект .json и создает метки и некоторые элементы управления в трех TableLayoutPanels. Первые две таблицы находятся на странице 1 TabPanel, а последняя — на странице 2.
Проблема в следующем: ЕСЛИ в начале программы я автоматически добавляю элементы управления в таблицы ИЛИ если Я просматриваю страницу 2 и добавляю элементы управления вручную, последняя таблица не отображает добавленные элементы управления.
Я могу войти в консольный журнал, и там есть все элементы управления, но они просто не отображаются.
Таблица работает только ЕСЛИ Я нахожусь на странице 1 и добавляю элементы управления вручную. Во всех трех случаях код добавления элементов управления один и тот же. Просто он ведет себя по-разному, смотрю ли я на страницу 2 или нет, или запускается при запуске. Для меня это не имеет смысла.
Gif 1, как это должно работать: в данном случае я нахожусь на странице 1 и вручную загружаю файл json, чтобы добавить элементы управления.
Gif 2. Я открываю программу, и она автоматически загружает json и добавляет элементы управления. Элементы управления в LayoutTable на странице 2 не отображаются.
Gif 3 Я «просматриваю» таблицу на странице 2 и загружаю файл JSON. Элементы управления также не отображаются.
Я уже пробовал вызывать tablelayoutpanel.Refresh() или .Invalidade(), не помогло. Попробовал установить двойную буферизацию true и false, не работает.
ps: «добавление элементов управления вручную» означает, что я нажимаю кнопку, чтобы загрузить json, и элементы управления добавляются.Код, добавляющий элементы управления на панели:
LabelData labelData;
List publicZPLFields = new List();
List publicControls = new List();
List privateZPLFields = new List();
List privateControls = new List();
List privateDataControls = new List();
List dataMatrixFields = new List();
List dataMatrixControls = new List();
public void LoadLabelData(LabelData data)
{
#region clear lists and dispose controls
for (int i = 0; i < publicControls.Count; i++)
{
publicTablePanel.Controls.Remove(publicControls[i]);
publicControls[i].Dispose();
}
publicControls.Clear();
for (int i = 0; i < privateControls.Count; i++)
{
privateTablePanel.Controls.Remove(privateControls[i]);
privateControls[i].Dispose();
}
privateControls.Clear();
for (int i = 0; i < privateDataControls.Count; i++)
{
privateDataTablePanel.Controls.Remove(privateDataControls[i]);
privateDataControls[i].Dispose();
}
privateDataControls.Clear();
dataMatrixControls.Clear();
#endregion
labelData = data;
publicZPLFields = data.LabelDataList.Where(d => !d.IsPrivate && d.ListMe).ToList();
privateZPLFields = data.LabelDataList.Where(d => d.IsPrivate && d.ListMe).ToList();
dataMatrixFields = data.LabelDataList.Where(d => d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH).ToList();
AnchorStyles a = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom;
Padding m = new Padding(1);
//adding the controls to the first table layout panel in the first page
int row = 1;
foreach (var d in publicZPLFields)
{
Label label = new Label();
label.Text = d.Name;
label.TextAlign = ContentAlignment.MiddleLeft;
publicTablePanel.Controls.Add(label, 0, row);
publicControls.Add(label);
switch (d.FieldType)
{
case FieldType.Text:
TextBox tb = new TextBox();
tb.Name = d.Name;
tb.Margin = m;
tb.Anchor = a;
tb.Text = d.defaultText;
tb.KeyPress += textBox_KeyPressed;
tb.TextChanged += updateZpl_TextChanged;
publicTablePanel.Controls.Add(tb, 1, row);
publicControls.Add(tb);
if(d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(tb);
break;
case FieldType.Date:
DateTimePicker dtp = new DateTimePicker();
dtp.Name = d.Name;
dtp.Margin = m;
dtp.Anchor = a;
dtp.Value = d.DateType == FieldDateType.TODAY ? DateTime.Today : d.defaultTime;
if(d.DateType == FieldDateType.TODAY)
dtp.Enabled = false;
publicTablePanel.Controls.Add(dtp, 1, row);
publicControls.Add(dtp);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(dtp);
break;
case FieldType.Serial:
NumericUpDown nud = new NumericUpDown();
nud.Name = d.Name;
nud.Margin = m;
nud.Anchor = a;
nud.Maximum = (int)Math.Pow(10, d.serialMax) - 1;
nud.Value = d.serialStart;
publicTablePanel.Controls.Add(nud, 1, row);
publicControls.Add(nud);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(nud);
break;
}
row++;
}
//adding controls to both "private" table layout panel, the one in the first page and the the one in the second page
row = 1;
foreach(var d in privateZPLFields)
{
Label label = new Label();
label.Text = d.Name;
label.TextAlign = ContentAlignment.MiddleLeft;
privateTablePanel.Controls.Add(label, 0, row);
privateControls.Add(label);
label = label.Clone();
privateDataTablePanel.Controls.Add(label, 0, row);
privateDataControls.Add(label);
switch (d.FieldType)
{
case FieldType.Text:
TextBox tb = new TextBox();
tb.Name = d.Name;
tb.Margin = m;
tb.Anchor = a;
tb.Text = d.defaultText;
tb.Enabled = false;
privateTablePanel.Controls.Add(tb, 1, row);
privateControls.Add(tb);
tb = tb.Clone();
tb.Enabled = true;
tb.KeyPress += textBox_KeyPressed;
tb.TextChanged += updateZpl_TextChanged;
privateDataTablePanel.Controls.Add(tb, 1, row);
privateDataControls.Add(tb);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(tb);
break;
case FieldType.Date:
DateTimePicker dtp = new DateTimePicker();
dtp.Name = d.Name;
dtp.Margin = m;
dtp.Anchor = a;
dtp.Value = d.DateType == FieldDateType.TODAY ? DateTime.Today : d.defaultTime;
dtp.Enabled = false;
privateTablePanel.Controls.Add(dtp, 1, row);
privateControls.Add(dtp);
dtp = dtp.Clone();
dtp.Enabled = d.DateType == FieldDateType.CUSTOM;
privateDataTablePanel.Controls.Add(dtp, 1, row);
privateDataControls.Add(dtp);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(dtp);
break;
case FieldType.Serial:
NumericUpDown nud = new NumericUpDown();
nud.Name = d.Name;
nud.Margin = m;
nud.Anchor = a;
nud.Maximum = (int)Math.Pow(10, d.serialMax) - 1;
nud.Value = d.serialStart;
nud.Enabled = false;
privateTablePanel.Controls.Add(nud, 1, row);
privateControls.Add(nud);
nud = nud.Clone();
nud.Enabled = true;
privateDataTablePanel.Controls.Add(nud, 1, row);
privateDataControls.Add(nud);
if (d.Visibility == FieldVisibility.DM || d.Visibility == FieldVisibility.BOTH)
dataMatrixControls.Add(nud);
break;
}
row++;
}
UpdateFinalZPL(labelData.sampleCode);
#region setup table layout panels
publicTablePanel.AutoScroll = true;
privateTablePanel.AutoScroll = true;
privateDataTablePanel.AutoScroll = true;
#endregion
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79274705/tablelayoutpanel-not-displaying-children-controls-when-looking-at-it-or-at-the-s[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия