DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridのヘッダー幅について

環境/言語:[WinXP SP1 / VB.NET 2003 / Framework1.1]
分類:[.NET]

2004/09/24(Fri) 11:59:00 編集(投稿者)

こんにちわ、にしかわです。
いつもお世話になっております。

DataGridのヘッダー幅について教えてください。
現在、Form上にDataGridをSize(W.H) = (800.325) で貼り付けました。
DataGridにカラムを2つ作成し、ヘッダーの幅をそれぞれ250、1000としました。

ここで質問なのですが、DataGridのヘッダーの幅が、
指定した幅サイズで表示しません。
列の端をダブルクリックすると、指定した幅サイズを表示するのですが、
(現在、HeaderTextに『----+----+ ・・・ ----+----+』と1000文字分セット
しています。)
width = 1000 とヘッダー幅を指定しているのに、どうして指定幅で
表示しないのか、さっぱり判らないのです。

申し訳ないですが、解消法をご存知の方、ご教授頂けると嬉しいです。
よろしくお願い致します。
■No6300に返信(にしかわ あつこさんの記事)
> width = 1000 とヘッダー幅を指定しているのに、どうして指定幅で
> 表示しないのか、さっぱり判らないのです。

サイズ指定が全く効かないのと、意図したサイズになってくれないのと、
二通り解釈できるので、質問はきちんと書いた方が良いと思います。


●前者の場合ですが、
TableStyleのMappingNameが空の場合、列の設定をしても列サイズが適用されません。
デザイナで、
DataSourceにDataSetを指定して、DataMemberにDataTableをセットする場合は
きちんと選択肢が表示されますが、
DataGridのDataSourceにDataTableを直接セットした場合、選択肢が「×なし」しか表示されません。
この場合、DataSourceに設定したものと同じDataTable名を選択肢に頼らず無理矢理手入力することで
設定を適用できます。(DataSetを使いなさいととのやんわりとした警告か?嫌がらせか?)


●後者の場合(「width = 1000」から、実際には後者だと思いますが。)
(後者の場合、いちいち答えない方がいいのかな?)

色々数値を変えて試せばその時点で気づくと思いますが、
widthにセットする値は文字数ではありません。
ピクセルです。

DataGridTextBoxColumnのヘルプを見れば
「Width (Control から継承されます) 」
と記載されています。
そして、Control.Widthには、
「プロパティ値 コントロールの幅 (ピクセル単位)。」
と記載されています。



なお、指定文字数分の幅を表示したいのであれば、
・GraphicsのMeasureString等で求めるなり、
・自分で計算しておいた係数を最大文字数に掛ける程度の簡易処理をするなり、
何らかの処理で計算したサイズを指定する必要があります。

(当然、固定幅のフォント以外では大幅にずれますので注意してください。)
こど。様

こんにちわ、にしかわです。
早速のご回答、ありがとうございます。

> サイズ指定が全く効かないのと、意図したサイズになってくれないのと、
> 二通り解釈できるので、質問はきちんと書いた方が良いと思います。
>

失礼致しました。
今後、気を付けたいと思います。

>
> なお、指定文字数分の幅を表示したいのであれば、
> ・GraphicsのMeasureString等で求めるなり、
> ・自分で計算しておいた係数を最大文字数に掛ける程度の簡易処理をするなり、
> 何らかの処理で計算したサイズを指定する必要があります。
>
> (当然、固定幅のフォント以外では大幅にずれますので注意してください。)
>

ピクセル値のことを、すっかり失念していました。
普段、あまり気にせず適当な値でセットしていた為、とんだお手数を
お掛けしてしまいました。
申し訳ないです。

ピクセル値で再度セットしてみます。
こと。様、この度は本当にありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板