2012-06-18 45 views
1

我不是100%確定我該怎麼說這個問題,但我會盡我所能。Winforms DataGridView調整大小問題

我有一個PointCtrlForm在TableLayoutPanel中有一個DataGridView。 DataGridView作爲Fill停靠在表上。 PointCtrlForm停靠到另一個設置爲MDIParent的窗口,其dockstyle屬性設置爲Fill。

調整主窗口大小正確調整了PointCtrlForm的大小,然後它應該調整DataGridView的大小。那麼,調整大小的至少「一半」工作正常。放大主窗口也會放大datagridview,這正是我所期望的,但如果我將主窗口縮小到某個點,DataGridView將停止收縮並隱藏列而不顯示滾動條。

我已經檢查過,所有列都沒有啓用Frozen屬性,選中了datagridview和子窗口都正確停靠,並且檢查滾動條屬性設置爲兩者。

編輯: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; 

    } 
} 
+0

嘗試'this.AutoSizeMode = AutoSizeMode.GrowAndShrink;'在mdi子form_load中。只檢查一次。我沒有非常好的命令在窗口 – JayOnDotNet

+0

當我嘗試過,它使所有的子窗體(包括DataGridView)消失後調整大小 – l46kok

回答

1

我找到了解決方案,它相當簡單。

DGV的行和列尺寸必須設置爲「百分比(相對)」而不是「絕對」,以便對接正常工作。

您可以通過右鍵單擊DGV的其中一個單元並單擊編輯行/列屬性來編輯尺寸。

+0

我沒有看到你改變的設置? –