Вопрос

Я пишу программу, которая получает данные из реестра, а затем добавляет groupboxes в tabcontrol, и в groupbox я хотел бы создать столько элементов управления метками (для отображения информации реестра), сколько данных (пар ключ-значение) Я получил.Чтобы сделать это, я создал эту функцию:

private void AddAllControl()
{
    GroupBox TestGroupBox = new GroupBox();
    TestGroupBox.AutoSize = true;
    TestGroupBox.Text = "valami";
    TestGroupBox.Height = 500;
    for (int i = 0; i < 21; i++)
    {
        Label TempLabel = new Label();
        TempLabel.Text = i.ToString();
        TempLabel.Location = new System.Drawing.Point(20 + i, 30);
        TempLabel.Show();
        TempLabel.Visible = true;
        TempLabel.Enabled = true;
        TestGroupBox.Controls.Add(TempLabel);               
    }
    tabPage_SandBox.Controls.Add(TestGroupBox);
}

Эта функция обрабатывается при нажатии кнопки.После этого групповое поле отображается корректно, но вместо 21 метки появляется только 1 первая метка (с текстом = 0).Когда я останавливаюсь для отладки программы, я вижу, что все метки существуют и все свойства верны, однако они не отображаются.Должно быть, есть что-то, чего я не заметил.А теперь мой вопрос?Что я сделал не так?Как вы можете видеть, я попробовал и то, и другое visible и enabled собственность, но ни то, ни другое не приносит мне решения.

Это было полезно?

Решение

Вы должны установить

  TempLabel.AutoSize = true;

И вы должны немного изменить местоположение, например

 TempLabel.Location = new System.Drawing.Point(20 + 10 * i, 30);

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

 TempLabel.Location = new System.Drawing.Point(20, 20+20 * i);

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

Если ваши метки имеют постоянный размер, то

TestGroupBox.Controls.Add(new Label()
{
    Text = i.ToString(),
    Location = new Point(20 + (i*20), 30),
    Size = new Size(20, 20)
});

Это сделало бы свое дело

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top