Как добавить поле для CheckedListBox в .NET? - PullRequest
0 голосов
/ 24 мая 2010

Я пишу приложение windforms, используя .NET (на самом деле IronPython, но это не актуально), и у меня есть объект CheckedListBox в моем GUI.

Работает нормально, в многоколоночном макете около 20 элементов.Но я не могу понять, как придать этой вещи хороший внутренний запас - я хочу вставить около 20 или 30 пикселей пробела вокруг верхнего, нижнего, левого и правого краев флажков.

Чтобы было ясно, я хочу, чтобы пробел появлялся между границей CheckedListBox и Checkboxes внутри него, а не снаружи всего компонента.

Надеюсь, это простой ответ, и я 'Я просто скучаю по нему, потому что я новичок в программировании в Windows.Если это невозможно, я думаю, это тоже было бы полезно узнать, поэтому я больше не трачу на это время.

(Если бы я делал это на Swing (Java), я бы хотел установитьвставки в моем компоненте, или, возможно, создайте составную границу с некоторым пустым пространством в нем.)

Ответы [ 2 ]

0 голосов
/ 09 мая 2016

Для всех, кто хочет добавить пространство вокруг флажков, проще всего использовать DataGridView и сделать его похожим на CheckedListBox. Вот некоторые из моих дизайнерских кодов:

        // 
        // dgv1
        // 
        this.dgv1.AllowUserToAddRows = false;
        this.dgv1.AllowUserToDeleteRows = false;
        this.dgv1.AllowUserToResizeColumns = false;
        this.dgv1.AllowUserToResizeRows = false;
        this.dgv1.BackgroundColor = System.Drawing.SystemColors.Control;
        this.dgv1.BorderStyle = System.Windows.Forms.BorderStyle.None;
        this.dgv1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
        this.dgv1.ColumnHeadersVisible = false;
        this.dgv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
        this.dgvcChecked,
        this.dgvcValue});
        dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
        dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
        dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.ControlText;
        dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Control;
        dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.ControlText;
        dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
        this.dgv1.DefaultCellStyle = dataGridViewCellStyle3;
        this.dgv1.Dock = System.Windows.Forms.DockStyle.Fill;
        this.dgv1.EnableHeadersVisualStyles = false;
        this.dgv1.Location = new System.Drawing.Point(7, 21);
        this.dgv1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
        this.dgv1.Name = "dgv1";
        this.dgv1.ReadOnly = true;
        this.dgv1.RowHeadersVisible = false;
        this.dgv1.RowTemplate.Height = 18;
        this.dgv1.RowTemplate.ReadOnly = true;
        this.dgv1.ShowCellErrors = false;
        this.dgv1.ShowCellToolTips = false;
        this.dgv1.ShowEditingIcon = false;
        this.dgv1.ShowRowErrors = false;

Чтобы получить или установить Проверенные позиции:

    // gets or sets the checked items in dgv1 ( dgvcChecked.Index = 0, dgvcValue.Index = 1 )
    public string[] pSelected { 
        get {  return ( from DataGridViewRow r in dgv1.Rows 
                        where r.Cells[dgvcChecked.Index].Value.Equals(true) 
                        select r.Cells[dgvcValue.Index].Value as string ).ToArray(); 
        }
        set { 
            if (value != null && value.Length > 0)
                foreach (DataGridViewRow r in dgv1.Rows)
                    r.Cells[dgvcChecked.Index].Value = value.Contains(r.Cells[dgvcValue.Index].Value as string);
        }
    }
0 голосов
/ 24 мая 2010

Родной элемент управления Window не поддерживает свойство Padding, иначе вы не сможете его убедить. Не настоящая проблема. Просто установите для BorderStyle значение «Нет» и поместите его в панель со свойством AutoScroll, равным True. Вам нужно будет установить размер списка в событии Load формы, потому что он может быть изменен. Фу, это выглядит неправильно. Ну хорошо.

...