dポイントプレゼントキャンペーン実施中!

どうしてもわからないことがありまして,datagridview上に列を追加しようとすると,
「列のFillWeght値の合計が65535を超えることはできません」
というエラーが出ます.追加する列数は8760列ですが,このエラーは列数が65535列を超えている?
ということなのでしょうか?

どうにも解決できないので,どなたかご教授願えないでしょうか?

dataGridView1.Columns.Add("clmName1", "日付");
for (int n = 0; n < 8760; n++)
{
String ss1 = String.Format("Time{0}", n);
String ss2 = String.Format("データ{0}", n);
this.dataGridView1.Columns.Add(ss1, ss2);
}

A 回答 (2件)

FillWeightの値は列全体の個数ではなくその列の表示幅の比率です。


この値は各列ごとに100.0がデフォルトで与えられます。
また、エラーメッセージが示すとおり、データグリッドビュー全体ではFillWeightの値の合計は65535を超えることはできませんが、
8670 * 100.0 = 867000.0 > 65535
となり、十倍以上オーバーしています。

というか、一覧として項目が8670も必要になるデータって何なんでしょうか。
その中で一覧として本当に使うのは多くても10項目ではないか、と思いますが……。
(データ件数と間違えていませんか?)
    • good
    • 0

> というか、一覧として項目が8670も必要になるデータって何なんでしょうか。


データベースのテーブルとかの形式としては普通ないですよね。。。

私は、
他に適当なコントロールが無いという理由から、単純な表形式コントロールの
扱いで、横並びの時系列データを画面に表示する目的で使っていたんですが、
DataSource に DataTable を設定する1行のコマンドで画面に表示するまで
数十秒~数分かかる事を確認しています。(列数にほぼ比例します。非表示なら
処理時間はそれほどかかりません。)

この質問の現象も確認していて、それは msdnフォーラムに
ColumnAdded イベントで FillWeight を設定する回答が付いていて
回避できたんですが、処理時間は短くできず、列数が多い場合は使えない
コントロールなのかな。。。と思ってます。
(パソコンのスペックによりますが、数百のオーダーが限界かと。。。)

# 内部処理で比率の計算とかを繰り返してるんじゃないかなぁ^^;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!