■No4272 (godera さん) に返信
> e.SortResult をint以上のlongにするにはどうしたらいいか教えてほしいです。
> よろしくお願いします。
>
> **************************************************
> //結果を代入
> e.SortResult = e.CellValue1 - e.CellValue2;
DataGridViewSortCompareEventArgs.SortResult プロパティ
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridviewsortcompareeventargs.sortresult%28VS.80%29.aspx
によれば。
> 最初のセルを 2 番目のセルよりも前に配置する場合は 0 未満。最初のセルと 2 番目
> のセルの値が同じである場合は 0。2 番目のセルを最初のセルよりも前に配置する場合
> は 0 を超える値。
とありますので、型自体は int でかまわないと思います。
引き算した結果を e.SortResult に入れているので、e.CellValue1 と e.CellValue2 が
long であるがために困っているのだと推測します。
ただ、解説にもあるように e.SortResult は必ずしも引き算した結果を入れなければいけ
ないわけではありません。0 未満の値、0、0 を超える値のいずれかが入っていればいい
わけです。
ということで、テキトーにこんな感じのコードでどうでしょうか(未検証)。
if (e.CellValue1 == e.CellValue2)
{
e.SortResult = 0;
}
else if (e.CellValue1 > e.CellValue2)
{
e.SortResult = 1;
}
else
{
e.SortResult = -1;
}
MSDN ライブラリを見るとこういった話はちゃんと載っていますので、質問する前に一度
目を通しておくといいと思います。
# って丁寧に書いてきたらえぴさんの一言に集約されてた orz
|