2009-07-17 64 views
1

在C#中,我使用DataGridView显示了一个表格。该表格明显小于其出现的表格,因此表格仅填充表格左上角的一小部分。 (1)表格自动放大以填充表格,或(2)使表格自动缩小到表格的大小? (而且,都是可能的?)Windows窗体:如何使窗体和网格更改尺寸一起?

using System ; 
using System.Windows.Forms ; 
using System.Data ; 

public class NiftyForm : System.Windows.Forms.Form 
    { 
    private  DataGridView  myDataGridView ; 
    private  System.Data.DataTable myDataTable ; 

    public NiftyForm () 
     { 
     this.Load += new EventHandler (NiftyFormLoadEventHandler) ; 
     } 

    private void NiftyFormLoadEventHandler (System.Object sender, 
              System.EventArgs ea) 
     { 
     this.Location = new System.Drawing.Point (40, 30) ; 
     this.Size  = new System.Drawing.Size (800, 600) ; 

     myDataTable = new DataTable () ; 
     DataColumn myDataColumn = new DataColumn () ; 
     myDataColumn.DataType   = typeof(string) ; 
     myDataColumn.ColumnName   = "Name"; 
     myDataColumn.ReadOnly   = true; 
     myDataTable.Columns.Add (myDataColumn) ; 

     myDataColumn = new DataColumn () ; 
     myDataColumn.DataType = typeof(int) ; 
     myDataColumn.ColumnName = "Age"; 
     myDataColumn.ReadOnly = true; 
     myDataTable.Columns.Add (myDataColumn) ; 

     string [ ] Name = new string [ 5 ] 
          { "Dwight", "Abe", "Cal", "Bill", "Eisenhower" } ; 
     int [ ] Age = new int [ 5 ] { 123, 45, 6, 78, 9 } ; 
     for (int i = 0 ; i < 5 ; i ++) 
      { 
      DataRow  myDataRow = myDataTable.NewRow () ; 
      myDataRow [ "Name" ] = Name [ i ] ; 
      myDataRow [ "Age" ] = Age [ i ] ; 
      myDataTable.Rows.Add (myDataRow) ; 
      } 

     this.myDataGridView    = new DataGridView () ; 
     this.myDataGridView.DataSource  = myDataTable ; 
     this.myDataGridView.Dock  = DockStyle.Fill ; 
     this.Controls.Add (this.myDataGridView) ; 
     } 

    [ STAThreadAttribute () ] 

    static void Main () 
     { 
     Application.Run (new NiftyForm ()) ; 
     } 

    } 

回答

3
this.myDataGridView.Dock = DockStyle.Fill; 

这将使的DataGrid填满整个

您还可以使用锚定像这样。

this.myDataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; 

这意味着,当调整其大小DataGrid的将调整。

+0

AnchorStyles.Bottom在您的答案中缺失。 – 2009-07-17 17:35:19

1

播放与电网:) 同样的码头和锚属性,你可能想尝试的形式的AutoSize属性,看看它是否工作,你想。

0

将表单设置为AutoSize = True和AutoSizeMode = GrowAndShrink,表单将根据网格大小设置大小。

0

我还没有遇到这样的问题,我无法用Anchor属性解决。对我而言,Dock似乎更难使用。我猜如果窗体上没有其他控件,则DockStyle.Fill即可。大多数表格都倾向于对其进行其他控制,因此锚定在所有四边都更容易。