Не работает док-станция CheckedListBox - PullRequest
4 голосов
/ 25 ноября 2011

Я создал пользовательский элемент управления для приложения Windows формы. Все, что у него есть, это TableLayoutPanel с четырьмя ячейками. Ячейка [0,0] и ячейка [0,1] имеют метки. Ячейка [1,0] имеет древовидную структуру, а ячейка [1,1] имеет CheckedListBox.

Для всех четырех элементов управления я установил стыковку в Fill. Этот чокнутый CheckedListBox кажется меньше, чем TreeView. Есть ли способ получить правильную стыковку для элементов управления?

Кстати, я использую .Net 3.5 и VS 2010.

Ниже приведен код файла конструктора для элемента управления:

namespace UserControls
{
    partial class LinkedContent
    {
        /// <summary> 
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary> 
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Component Designer generated code

        /// <summary> 
        /// Required method for Designer support - do not modify 
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
            this.lblContentGroups = new System.Windows.Forms.Label();
            this.lblModules = new System.Windows.Forms.Label();
            this.tvContent = new System.Windows.Forms.TreeView();
            this.chkListBoxModules = new System.Windows.Forms.CheckedListBox();
            this.tableLayoutPanel1.SuspendLayout();
            this.SuspendLayout();
            // 
            // tableLayoutPanel1
            // 
            this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single;
            this.tableLayoutPanel1.ColumnCount = 2;
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tableLayoutPanel1.Controls.Add(this.lblContentGroups, 0, 0);
            this.tableLayoutPanel1.Controls.Add(this.lblModules, 1, 0);
            this.tableLayoutPanel1.Controls.Add(this.tvContent, 0, 1);
            this.tableLayoutPanel1.Controls.Add(this.chkListBoxModules, 1, 1);
            this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
            this.tableLayoutPanel1.Name = "tableLayoutPanel1";
            this.tableLayoutPanel1.RowCount = 2;
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.760532F));
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 92.23947F));
            this.tableLayoutPanel1.Size = new System.Drawing.Size(501, 451);
            this.tableLayoutPanel1.TabIndex = 0;
            // 
            // lblContentGroups
            // 
            this.lblContentGroups.AutoSize = true;
            this.lblContentGroups.Dock = System.Windows.Forms.DockStyle.Fill;
            this.lblContentGroups.Location = new System.Drawing.Point(4, 1);
            this.lblContentGroups.Name = "lblContentGroups";
            this.lblContentGroups.Size = new System.Drawing.Size(243, 34);
            this.lblContentGroups.TabIndex = 0;
            this.lblContentGroups.Text = "Content Groups";
            this.lblContentGroups.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // lblModules
            // 
            this.lblModules.AutoSize = true;
            this.lblModules.Dock = System.Windows.Forms.DockStyle.Fill;
            this.lblModules.Location = new System.Drawing.Point(254, 1);
            this.lblModules.Name = "lblModules";
            this.lblModules.Size = new System.Drawing.Size(243, 34);
            this.lblModules.TabIndex = 1;
            this.lblModules.Text = "Modules";
            this.lblModules.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // tvContent
            // 
            this.tvContent.CheckBoxes = true;
            this.tvContent.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tvContent.Location = new System.Drawing.Point(4, 39);
            this.tvContent.Name = "tvContent";
            this.tvContent.Size = new System.Drawing.Size(243, 408);
            this.tvContent.TabIndex = 2;
            // 
            // chkListBoxModules
            // 
            this.chkListBoxModules.Dock = System.Windows.Forms.DockStyle.Fill;
            this.chkListBoxModules.FormattingEnabled = true;
            this.chkListBoxModules.Location = new System.Drawing.Point(254, 39);
            this.chkListBoxModules.Name = "chkListBoxModules";
            this.chkListBoxModules.Size = new System.Drawing.Size(243, 408);
            this.chkListBoxModules.TabIndex = 3;
            // 
            // LinkedContent
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Controls.Add(this.tableLayoutPanel1);
            this.Name = "LinkedContent";
            this.Size = new System.Drawing.Size(501, 451);
            this.tableLayoutPanel1.ResumeLayout(false);
            this.tableLayoutPanel1.PerformLayout();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
        private System.Windows.Forms.Label lblContentGroups;
        private System.Windows.Forms.Label lblModules;
        private System.Windows.Forms.TreeView tvContent;
        private System.Windows.Forms.CheckedListBox chkListBoxModules;
    }
}

1 Ответ

8 голосов
/ 25 ноября 2011

Убедитесь, что свойство IntegralHeight не установлено. По умолчанию установлено значение true.

Сверху MSDN Ссылка:

Если для этого свойства установлено значение true, элемент управления автоматически изменяет размеры чтобы убедиться, что элемент не отображается частично. Если хотите сохранить оригинальный размер ListBox на основе пробела требования вашей формы, установите для этого свойства значение false.

...