2009-07-17 11 views
1

C#では、DataGridViewを使用して表を表示しています。テーブルは、表示されるフォームよりも大幅に小さいので、フォームはフォームの左上隅の小さな部分だけを塗りつぶします。Windowsフォーム:フォームとグリッドの変更サイズを一緒にするには?

私の質問:どのようにして(1)テーブルを自動的に拡大してフォームを塗りつぶすか、または(2)フォームを自動的にテーブルのサイズに縮小することができますか?グリッドのドックとアンカーのプロパティを持つ(そして、両方の可能性がありますか?)

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がありません。 –

+0

これは、フォームの下部にアンカーしなかったためです。アンカーがフォームの一部を選択する方法を示していただけです:) –

1

プレイ:) また、あなたがしたいと、それが動作するかどうかを確認するために、フォームのAutoSizeプロパティをしようとする場合があります。

0

フォームをAutoSize = True、AutoSizeMode = GrowAndShrinkに設定すると、フォームのサイズがグリッドサイズになります。

0

私はAnchorプロパティで解決できなかったこのような問題をまだ解決していません。私にとっては、Dockははるかに難しいようです。フォーム上に他のコントロールがない場合は、DockStyle.FillはOKです。ほとんどのフォームは他のコントロールを持つ傾向がありますので、4つの側面すべてに固定するほうがはるかに簡単です。

関連する問題