Создание новой «страницы» в C # и финальной страницы с подробностями из предыдущих «страниц» - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть форма, содержащая таблицу данных, в которой он что-то вычисляет (некоторые материалы для одного элемента)Есть также кнопка печати, которая сохраняет и распечатывает эту таблицу, содержащую сетку.

Теперь мне нужна кнопка для запуска новой "страницы" с новой сеткой для следующего элемента из того же порядка.

На последней странице мне нужно составить сумму из всех итогов с предыдущих страниц.

Кроме того, мне нужно распечатать страницу для каждой ранее созданной сетки, а последняя страница должна содержать итоги.

Пример. Сумма по одному предмету - 2 блокнота и 1 ручка

Перечисленные страницы должны быть следующими: страница 1 с подробностями для элемента 1, страница 2 с подробностями для элемента 2 и страница 3 с подробностями с последней страницы с итогом.

Любые советы, как мне это сделатьтот?

Код ниже.

    public Form1()
    {
        InitializeComponent();
    }

    //<----ALGORITM---->

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            //<----Bagheta---->
            row.Cells[dataGridView1.Columns["Bagheta"].Index].Value = ((Convert.ToDouble(row.Cells[dataGridView1.Columns["Lungime"].Index].Value) + Convert.ToDouble(row.Cells[dataGridView1.Columns["Latime"].Index].Value)) * 2) / 1000;

            //<----Silicagel----> de adaptat formula
            row.Cells[dataGridView1.Columns["Silicagel"].Index].Value = ((Convert.ToDouble(row.Cells[dataGridView1.Columns["Lungime"].Index].Value) + Convert.ToDouble(row.Cells[dataGridView1.Columns["Latime"].Index].Value)) * 2 * 0.08) / 1000;

            //<----Butil----> de adaptat formula
            row.Cells[dataGridView1.Columns["Butil"].Index].Value = ((Convert.ToDouble(row.Cells[dataGridView1.Columns["Lungime"].Index].Value) + Convert.ToDouble(row.Cells[dataGridView1.Columns["Latime"].Index].Value)) * 2 * 0.11) / 1000;

            //<----Tiocol----> de adaptat formula
            row.Cells[dataGridView1.Columns["Tiocol"].Index].Value = ((Convert.ToDouble(row.Cells[dataGridView1.Columns["Lungime"].Index].Value) + Convert.ToDouble(row.Cells[dataGridView1.Columns["Latime"].Index].Value) * 2 * 0.1)) / 1000;

            //<----Sticla----> de adaptat formula
            row.Cells[dataGridView1.Columns["Sticla"].Index].Value = ((Convert.ToDouble(row.Cells[dataGridView1.Columns["Lungime"].Index].Value) * Convert.ToDouble(row.Cells[dataGridView1.Columns["Latime"].Index].Value)) * 1.15) / 1000;

            //<----Corniere----> de adaptat formula
            row.Cells[dataGridView1.Columns["Corniere"].Index].Value = 4;

        }
    }


    //<----PRINT SYSTEM---->
    private void button1_Click(object sender, EventArgs e)
    {
        PrintPanel();
    }

    private void PrintPanel()
    {
        System.Drawing.Printing.PrintDocument doc = new PrintDocument();
        doc.PrintPage += new PrintPageEventHandler(doc_PrintPage);
        doc.Print();
    }

    private void doc_PrintPage(object sender, PrintPageEventArgs e)
    {
        Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);

        float tgtWidthMM = 210;  //A4 paper size
        float tgtHeightMM = 297;
        float tgtWidthInches = tgtWidthMM / 25f; //25.4f
        float tgtHeightInches = tgtHeightMM / 25f;
        float srcWidthPx = bmp.Width;
        float srcHeightPx = bmp.Height;
        float dpiX = srcWidthPx / tgtWidthInches;
        float dpiY = srcHeightPx / tgtHeightInches;

        bmp.SetResolution(dpiX, dpiY);

        panel1.DrawToBitmap(bmp, panel1.ClientRectangle);

        e.Graphics.PageUnit = GraphicsUnit.Millimeter;
        e.Graphics.DrawImage(bmp, 0, 0, tgtWidthMM, tgtHeightMM);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...