- - PR -
dataGridの幅。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-12-30 04:45
初めて投稿させていただきます。
NAOKOと申します。 現在、C#でプログラムを勉強させていただいているのですが、 windows formでdatagridの各項目の幅を調整するためには、どのような方法があるのかわからず、 質問させていただきました。 どうかご返信いただければ幸いです。 宜しくお願いいたします。 [ メッセージ編集済み 編集者: NAOKO 編集日時 2003-12-30 04:46 ] |
|
投稿日時: 2003-12-30 10:39
>windows formでdatagridの各項目の幅を調整するためには... DataGrid の TableStyle で GridColumnStyles.Item.Width でどうでしょうか。 ( datagrid1.TableStyles[tablestylename].GridColumnStyles[nn].With = 123; ) 「各項目の幅の調整」ということで、各カラムの最長文字列に自動的に合わせる 為にはカラム毎に全行中の最大文字列長を DataGrid の Graphics の MeasureString で算出してセットしてあげれば良いとおもいます。 以下は大凡のコード for (int iCol = 0; iCol < ((DataTable)dataGrid1.DataSource).Columns.Count;iCol++) { float width = 0; int irows = ((DataTable) dataGrid1.DataSource).Rows.Count; Graphics g = Graphics.FromHwnd(dataGrid1.Handle); StringFormat sf = new StringFormat(StringFormat.GenericDefault); SizeF size; for(int i = 0; i < irows; ++ i) { size = g.MeasureString(dataGrid1[i, iCol].ToString(), dataGrid1.Font); if(size.Width > width) width = size.Width; } g.Dispose(); string sTableName = dataGrid1.DataSource.ToString(); dataGrid1.TableStyles[sTableName].GridColumnStyles[iCol].Width = (int)width; } |
|
投稿日時: 2003-12-30 15:44
ご返信ありがとうございます。
この方法(datagrid1.TableStyles[tablestylename].GridColumnStyles[nn].With = 123;)で実装できたのですが、チェックボックスだった欄が、TUREとFALSEで表示されるようになってしまいました。この欄だけは、チェックボックスのまま表示したいのですが、出来ますでしょうか? さらにヘッダの文字も消えてしまったのですが、これも表示できるように出来ますでしょうか。 (このコードでやると、データグリッドのヘッダの部分を押すと並べ換えが出来てしまうのですね・・・。んー困った・・・。) ご教授宜しくお願いいたします。 [ メッセージ編集済み 編集者: NAOKO 編集日時 2003-12-30 15:49 ] |
|
投稿日時: 2004-01-01 12:43
>で実装できたのですが、チェックボックスだった欄が、TUREとFALSEで表示されるようになってしまいました。この欄だけは、チェック>ボックスのまま表示したいのですが、出来ますでしょうか?
どの様な実装になっているか判りませんのでコメントのしようがありませんが、カラムの属性がBooleanであれば問題なくチェックボックスで表示されていますよ? >さらにヘッダの文字も消えてしまったのですが、これも表示できるように出来ますでしょうか。 ?? datagrid1.CaptionText = "ヘッダの文字"; >(このコードでやると、データグリッドのヘッダの部分を押すと並べ換えが出来てしまうのですね・・・。んー困った・・・。) GridStyle の AllowSorting が true のままなのでは? |
1