Отключенные флажки в flowLayoutPanel

Я пытаюсь динамически создать некоторые флажки в элементе управления flowLayoutPanel.

Мне удалось создать его, но они, похоже, отключены внутри панели. Я не могу поставить/снять их. Они серые и не активны.

Я предполагаю, что есть какое-то свойство flowLayoutPanel, которое предотвращает включение этих флажков, которые мне не хватает.

Вот мой код для flowLayoutPanel:

// 
// flowLayoutPanelForCheckBoxes
// 
this.flowLayoutPanelForCheckBoxes.Controls.Add(this.SomeCheckBox);
this.flowLayoutPanelForCheckBoxes.AutoScroll = true;
this.flowLayoutPanelForCheckBoxes.Location = new System.Drawing.Point(132, 8);
this.flowLayoutPanelForCheckBoxes.Name = "flowLayoutPanelForCheckBoxes";
this.flowLayoutPanelForCheckBoxes.Size = new System.Drawing.Size(546, 38);
this.flowLayoutPanelForCheckBoxes.TabIndex = 28;
this.flowLayoutPanelForCheckBoxes.WrapContents = false;

Для создания флажков:

private List<CheckBox> GetGeneratedCheckboxes()
{
    var generatedCheckboxes = new List<CheckBox>();

    var valuesForCheckboxes = GetCheckboxValuesFromDb(); //it returns dictionary<int, string> 

    // with some numbers and text. I think this method is not as important

    if (valuesForCheckboxes != null && valuesForCheckboxes.Count != 0)
    {
        int index = 0;
        foreach (var chbx in valuesForCheckboxes)
        {
            var checkboxToAdd = new System.Windows.Forms.CheckBox();

            checkboxToAdd.AutoSize = true;
            checkboxToAdd.Enabled = true;
            checkboxToAdd.Checked = true;
            checkboxToAdd.CheckState = System.Windows.Forms.CheckState.Checked;
            checkboxToAdd.Size = new System.Drawing.Size(84, 21);
            checkboxToAdd.UseVisualStyleBackColor = true;

            checkboxToAdd.Name = "chboxCountry" + chbx.Key;
            checkboxToAdd.Text = chbx.Value;
            checkboxToAdd.TabIndex = index + 1;

            index++;

            generatedCheckboxes.Add(checkboxToAdd);
        }
    }

    return generatedCheckboxes;
}

И он используется в методе FormLoad:

var checkboxesForPanel = GetGeneratedCheckboxes();

foreach (var checkbox in checkboxesForPanel)
{
    this.flowLayoutPanelForCheckBoxes.Controls.Add(checkbox);
}

person Alice    schedule 17.12.2018    source источник
comment
Проблема не воспроизводится с предоставленной вами информацией/кодом; происходит что-то еще. Прочтите Как создать минимальный, полный и проверяемый пример.   -  person 41686d6564    schedule 17.12.2018
comment
Попробуйте добавить flowLayoutPanelForCheckBoxes.Enabled = true; где-нибудь в свой код.   -  person preciousbetine    schedule 17.12.2018
comment
К сожалению, @preciousbetine не сработал.   -  person Alice    schedule 17.12.2018
comment
Я не люблю flowLayoutPanel и скорее пишу свою версию с использованием прямой панели. Многие функции, такие как события, не работают на панели потока, и многие свойства недоступны.   -  person jdweng    schedule 17.12.2018
comment
Мой хрустальный шар говорит, что вы видите эти галочки, когда открываете конструктор для формы. Да ничего с ними не сделаешь. Происходит при использовании шаблона элемента Inherited Form. Необходимо использовать свойство this.DesignMode в обработчике событий Load базовой формы, чтобы избежать выполнения запроса базы данных во время разработки. Случайно работает сейчас, но у вас будут несчастные случаи в будущем.   -  person Hans Passant    schedule 17.12.2018


Ответы (1)


Код выглядит нормально для меня. Это не проблема. Проверьте, не находится ли ваша панель макета потока в отключенном состоянии каким-либо образом. Зайдите в конструктор или проверьте свой код, если он находится в отключенном состоянии.

person Nilesh Shinde    schedule 17.12.2018