0

印刷済みフォームの両面に DataGridView からデータを印刷する必要がありますが、

  1. 各側には、その情報の配置が異なります。
  2. 各側はツリー行からの情報のみを保持できるため、次のようになります。
  3. 1 列目、2 列目、3 列目はサイド 1 に配置します。
  4. 4 列目、5 列目、6 列目はサイド 2 に配置します。
  5. 7 行目、8 行目、9 行目はサイド 1 に配置されます。
  6. 10 番目、11 番目、12 番目は面 2 に移動します。等々。

印刷するグループを選択します。

私はこのようにする予定です: ここに画像の説明を入力

  1. ((row.Index) +1) / 3,
  2. 小数点以下を切り捨てて整数を取得します (上記の Excel 画像のように)。
  3. その整数を 2 倍する MOD (上記の Excel 画像のように)。

その MOD を 2 倍した結果が 1 の場合は Side 1 の配置を印刷し、その MOD を 2 倍した結果が 0 の場合は Side 2 の配置を印刷します。

  • C# で行うにはどうすればよいですか? VS2010 Express Edition を使用しています。また、System.Math.Ceiling を使用したかったのですが、名前空間、10 進数、倍精度、および浮動小数点数の警告またはエラーが発生しました。
4

1 に答える 1

6

そのようなものを使用する必要があるとは思いません:

int zeroBasedRow = row - 1;
int side = ((zeroBasedRow / 3) % 2) + 1;

テストコード:

using System;

class Test
{
    static void Main(string[] args)
    {
        for (int row = 1; row <= 12; row++)
        {
            int zeroBasedRow = row - 1;
            int side = ((zeroBasedRow / 3) % 2) + 1;
            Console.WriteLine("Row {0} goes on side {1}", row, side);
        }
    }
}

出力:

Row 1 goes on side 1
Row 2 goes on side 1
Row 3 goes on side 1
Row 4 goes on side 2
Row 5 goes on side 2
Row 6 goes on side 2
Row 7 goes on side 1
Row 8 goes on side 1
Row 9 goes on side 1
Row 10 goes on side 2
Row 11 goes on side 2
Row 12 goes on side 2
于 2011-09-08T21:29:30.827 に答える