1

この質問の言い方は100%わかりませんが、最善を尽くします。

TableLayoutPanel内にDataGridViewを持つPointCtrlFormがあります。DataGridViewはFillとしてテーブルにドッキングされます。PointCtrlFormは、dockstyleプロパティがFillとして設定されたMDIParentとして設定された別のウィンドウにドッキングされます。

メインウィンドウのサイズを変更すると、PointCtrlFormのサイズが適切に変更され、DataGridViewのサイズも変更されます。さて、サイズ変更の少なくとも「半分」は適切に機能します。メインウィンドウを拡大すると、datagridviewも拡大されます。これは予想どおりですが、メインウィンドウを特定のポイントまで縮小すると、DataGridViewは縮小を停止し、スクロールバーを表示せずに列を非表示にします。

すべての列でFrozenプロパティが有効になっていないこと、datagridviewと子ウィンドウの両方が適切にドッキングされていること、scrollbarsプロパティが両方に設定されていることを確認しました。

編集:AutoSizeColumnsModeも塗りつぶされます。

Designer.csのコンテンツをここに投稿します。ご指導をいただければ幸いです。

namespace DDCUI
{
    partial class PointCtrlForm
    {
        /// <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 Windows Form 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.CmbSubDevice = new System.Windows.Forms.ComboBox();
            this.BtnBack = new System.Windows.Forms.Button();
            this.CmbMainDevice = new System.Windows.Forms.ComboBox();
            this.dataGridView1 = new System.Windows.Forms.DataGridView();
            this.BtnRefresh = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.ID = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.PointName = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.Value = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.Description = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.DefaultValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.ActiveString = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.InactiveString = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.AlarmCondition = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.tableLayoutPanel1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
            this.SuspendLayout();
            // 
            // tableLayoutPanel1
            // 
            this.tableLayoutPanel1.ColumnCount = 6;
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 151F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 88F));
            this.tableLayoutPanel1.Controls.Add(this.CmbSubDevice, 0, 1);
            this.tableLayoutPanel1.Controls.Add(this.BtnBack, 0, 0);
            this.tableLayoutPanel1.Controls.Add(this.CmbMainDevice, 0, 1);
            this.tableLayoutPanel1.Controls.Add(this.dataGridView1, 0, 2);
            this.tableLayoutPanel1.Controls.Add(this.BtnRefresh, 4, 1);
            this.tableLayoutPanel1.Controls.Add(this.label1, 5, 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 = 3;
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 67.02128F));
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 32.97872F));
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 368F));
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
            this.tableLayoutPanel1.Size = new System.Drawing.Size(639, 467);
            this.tableLayoutPanel1.TabIndex = 0;
            // 
            // CmbSubDevice
            // 
            this.tableLayoutPanel1.SetColumnSpan(this.CmbSubDevice, 2);
            this.CmbSubDevice.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.CmbSubDevice.Font = new System.Drawing.Font("굴림", 12F);
            this.CmbSubDevice.FormattingEnabled = true;
            this.CmbSubDevice.Location = new System.Drawing.Point(203, 69);
            this.CmbSubDevice.Name = "CmbSubDevice";
            this.CmbSubDevice.Size = new System.Drawing.Size(194, 24);
            this.CmbSubDevice.TabIndex = 3;
            // 
            // BtnBack
            // 
            this.BtnBack.Location = new System.Drawing.Point(3, 3);
            this.BtnBack.Name = "BtnBack";
            this.BtnBack.Size = new System.Drawing.Size(94, 54);
            this.BtnBack.TabIndex = 0;
            this.BtnBack.Text = "Back";
            this.BtnBack.UseVisualStyleBackColor = true;
            this.BtnBack.Click += new System.EventHandler(this.BtnBack_Click);
            // 
            // CmbMainDevice
            // 
            this.tableLayoutPanel1.SetColumnSpan(this.CmbMainDevice, 2);
            this.CmbMainDevice.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.CmbMainDevice.Font = new System.Drawing.Font("굴림", 12F);
            this.CmbMainDevice.FormattingEnabled = true;
            this.CmbMainDevice.Items.AddRange(new object[] {
            "I/O",
            "VIRTUAL",
            "SAC",
            "MODBUS",
            "NATIONAL",
            "TOSHIBA",
            "SCHEDULE",
            "SYSTEM ALARM",
            "LOGIC",
            "GROUP"});
            this.CmbMainDevice.Location = new System.Drawing.Point(3, 69);
            this.CmbMainDevice.Name = "CmbMainDevice";
            this.CmbMainDevice.Size = new System.Drawing.Size(194, 24);
            this.CmbMainDevice.TabIndex = 2;
            this.CmbMainDevice.SelectedIndexChanged += new System.EventHandler(this.CmbMainDevice_SelectedIndexChanged);
            // 
            // dataGridView1
            // 
            this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
            this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.ID,
            this.PointName,
            this.Value,
            this.Description,
            this.DefaultValue,
            this.ActiveString,
            this.InactiveString,
            this.AlarmCondition});
            this.tableLayoutPanel1.SetColumnSpan(this.dataGridView1, 6);
            this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.dataGridView1.Location = new System.Drawing.Point(3, 101);
            this.dataGridView1.Name = "dataGridView1";
            this.dataGridView1.RowTemplate.Height = 23;
            this.dataGridView1.Size = new System.Drawing.Size(633, 363);
            this.dataGridView1.TabIndex = 5;
            // 
            // BtnRefresh
            // 
            this.BtnRefresh.Location = new System.Drawing.Point(403, 69);
            this.BtnRefresh.Name = "BtnRefresh";
            this.BtnRefresh.Size = new System.Drawing.Size(94, 26);
            this.BtnRefresh.TabIndex = 6;
            this.BtnRefresh.Text = "Refresh";
            this.BtnRefresh.UseVisualStyleBackColor = true;
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.label1.Font = new System.Drawing.Font("굴림", 12F);
            this.label1.Location = new System.Drawing.Point(554, 66);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(82, 32);
            this.label1.TabIndex = 7;
            this.label1.Text = "XXX 개";
            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // ID
            // 
            this.ID.FillWeight = 70F;
            this.ID.HeaderText = "ID";
            this.ID.Name = "ID";
            // 
            // PointName
            // 
            this.PointName.FillWeight = 70F;
            this.PointName.HeaderText = "이름";
            this.PointName.Name = "PointName";
            // 
            // Value
            // 
            this.Value.FillWeight = 70F;
            this.Value.HeaderText = "값";
            this.Value.Name = "Value";
            // 
            // Description
            // 
            this.Description.FillWeight = 70F;
            this.Description.HeaderText = "설명";
            this.Description.Name = "Description";
            // 
            // DefaultValue
            // 
            this.DefaultValue.FillWeight = 70F;
            this.DefaultValue.HeaderText = "초기값";
            this.DefaultValue.Name = "DefaultValue";
            // 
            // ActiveString
            // 
            this.ActiveString.HeaderText = "Active문자열";
            this.ActiveString.Name = "ActiveString";
            // 
            // InactiveString
            // 
            this.InactiveString.HeaderText = "InActive문자열";
            this.InactiveString.Name = "InactiveString";
            // 
            // AlarmCondition
            // 
            this.AlarmCondition.HeaderText = "알람조건";
            this.AlarmCondition.Name = "AlarmCondition";
            // 
            // PointCtrlForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(639, 467);
            this.Controls.Add(this.tableLayoutPanel1);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Name = "PointCtrlForm";
            this.Text = "LG-DDC";
            this.tableLayoutPanel1.ResumeLayout(false);
            this.tableLayoutPanel1.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
        private System.Windows.Forms.Button BtnBack;
        private System.Windows.Forms.ComboBox CmbMainDevice;
        private System.Windows.Forms.ComboBox CmbSubDevice;
        private System.Windows.Forms.DataGridView dataGridView1;
        private System.Windows.Forms.Button BtnRefresh;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.DataGridViewTextBoxColumn ID;
        private System.Windows.Forms.DataGridViewTextBoxColumn PointName;
        private System.Windows.Forms.DataGridViewTextBoxColumn Value;
        private System.Windows.Forms.DataGridViewTextBoxColumn Description;
        private System.Windows.Forms.DataGridViewTextBoxColumn DefaultValue;
        private System.Windows.Forms.DataGridViewTextBoxColumn ActiveString;
        private System.Windows.Forms.DataGridViewTextBoxColumn InactiveString;
        private System.Windows.Forms.DataGridViewTextBoxColumn AlarmCondition;

    }
}
4

1 に答える 1

1

私は解決策を見つけました、そしてそれはかなり簡単です。

ドッキングが正しく機能するためには、DGVの行と列のサイズを「絶対」ではなく「パーセンテージ(相対)」に設定する必要があります。

DGVのセルの1つを右クリックし、[行/列のプロパティの編集]をクリックすると、サイズを編集できます。

于 2012-06-19T00:15:20.630 に答える