/// <summary> /// the majority of this Sub is calculating printed page ranges /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <remarks></remarks> private void pd_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) { //'this removes the printed page margins pd.OriginAtMargins = true; pd.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(location.X, 0, location.Y, 0); pages = new Dictionary<int, pageDetails>(); int maxWidth = Convert.ToInt32(pd.DefaultPageSettings.PrintableArea.Width) - 40; int maxHeight = Convert.ToInt32(pd.DefaultPageSettings.PrintableArea.Height - (titleHeight + 12)) - 100; int pageCounter = 0; pages.Add(pageCounter, new pageDetails { headerIndices = new List<int>() }); int columnCounter = 0; int columnSum = 0; for (int c = 0; c <= lv.Columns.Count - 1; c++) { if (columnSum + lv.Columns[c].Width < maxWidth) { columnSum += lv.Columns[c].Width; columnCounter += 1; } else { pages[pageCounter] = new pageDetails { columns = columnCounter, rows = 0, startCol = pages[pageCounter].startCol, headerIndices = pages[pageCounter].headerIndices }; columnSum = lv.Columns[c].Width; columnCounter = 1; pageCounter += 1; pages.Add(pageCounter, new pageDetails { startCol = c, headerIndices = new List<int>() }); } if (c == lv.Columns.Count - 1) { if (pages[pageCounter].columns == 0) { pages[pageCounter] = new pageDetails { columns = columnCounter, rows = 0, startCol = pages[pageCounter].startCol, headerIndices = pages[pageCounter].headerIndices }; } } } maxPagesWide = pages.Keys.Max() + 1; pageCounter = 0; int rowCounter = 0; int counter = 0; int itemHeight = lv.GetItemRect(0).Height; int rowSum = itemHeight; if (hasGroups) { for (int g = 0; g <= lv.Groups.Count - 1; g++) { rowSum += itemHeight + 6; pages[pageCounter].headerIndices.Add(counter); for (int r = 0; r <= lv.Groups[g].Items.Count - 1; r++) { counter += 1; if (rowSum + itemHeight < maxHeight) { rowSum += itemHeight; rowCounter += 1; } else { pages[pageCounter] = new pageDetails { columns = pages[pageCounter].columns, rows = rowCounter, startCol = pages[pageCounter].startCol, startRow = pages[pageCounter].startRow, headerIndices = pages[pageCounter].headerIndices }; for (int x = 1; x <= maxPagesWide - 1; x++) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter].startRow, headerIndices = pages[pageCounter].headerIndices }; } pageCounter += maxPagesWide; for (int x = 0; x <= maxPagesWide - 1; x++) { pages.Add(pageCounter + x, new pageDetails { columns = pages[x].columns, rows = 0, startCol = pages[x].startCol, startRow = counter - 1, headerIndices = new List<int>() }); } rowSum = itemHeight * 2 + itemHeight + 6; rowCounter = 1; } if (counter == lv.Items.Count) { for (int x = 0; x <= maxPagesWide - 1; x++) { if (pages[pageCounter + x].rows == 0) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter + x].startRow, headerIndices = pages[pageCounter + x].headerIndices }; } } } } } } else { for (int r = 0; r <= lv.Items.Count - 1; r++) { counter += 1; if (rowSum + itemHeight < maxHeight) { rowSum += itemHeight; rowCounter += 1; } else { pages[pageCounter] = new pageDetails { columns = pages[pageCounter].columns, rows = rowCounter, startCol = pages[pageCounter].startCol, startRow = pages[pageCounter].startRow }; for (int x = 1; x <= maxPagesWide - 1; x++) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter].startRow }; } pageCounter += maxPagesWide; for (int x = 0; x <= maxPagesWide - 1; x++) { pages.Add(pageCounter + x, new pageDetails { columns = pages[x].columns, rows = 0, startCol = pages[x].startCol, startRow = counter - 1 }); } rowSum = itemHeight * 2; rowCounter = 1; } if (counter == lv.Items.Count) { for (int x = 0; x <= maxPagesWide - 1; x++) { if (pages[pageCounter + x].rows == 0) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter + x].startRow }; } } } } } maxPagesTall = pages.Count / maxPagesWide; if (hasGroups) { items = new ListViewItem[] { }; foreach (ListViewGroup g in lv.Groups) { items = items.Concat(g.Items.Cast<ListViewItem>().ToArray()).ToArray(); } } else { items = lv.Items.Cast<ListViewItem>().ToArray(); } }
/// <summary> /// the majority of this Sub is calculating printed page ranges /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <remarks></remarks> private void pd_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) { //'this removes the printed page margins pd.OriginAtMargins = true; pd.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(location.X, location.X, location.Y, location.Y); pages = new Dictionary <int, pageDetails>(); int maxWidth = Convert.ToInt32(pd.DefaultPageSettings.PrintableArea.Width) - (pd.DefaultPageSettings.Margins.Left + pd.DefaultPageSettings.Margins.Right + 40); int maxHeight = Convert.ToInt32(pd.DefaultPageSettings.PrintableArea.Height - (titleHeight + 12)) - (pd.DefaultPageSettings.Margins.Top + pd.DefaultPageSettings.Margins.Bottom + 40); int pageCounter = 0; pages.Add(pageCounter, new pageDetails { headerIndices = new List <int>() }); int columnCounter = 0; int columnSum = 0; for (int c = 0; c <= lv.Columns.Count - 1; c++) { if (columnSum + lv.Columns[c].Width < maxWidth) { columnSum += lv.Columns[c].Width; columnCounter += 1; } else { pages[pageCounter] = new pageDetails { columns = columnCounter, rows = 0, startCol = pages[pageCounter].startCol, headerIndices = pages[pageCounter].headerIndices }; columnSum = lv.Columns[c].Width; columnCounter = 1; pageCounter += 1; pages.Add(pageCounter, new pageDetails { startCol = c, headerIndices = new List <int>() }); } if (c == lv.Columns.Count - 1) { if (pages[pageCounter].columns == 0) { pages[pageCounter] = new pageDetails { columns = columnCounter, rows = 0, startCol = pages[pageCounter].startCol, headerIndices = pages[pageCounter].headerIndices }; } } } maxPagesWide = pages.Keys.Max() + 1; pageCounter = 0; int rowCounter = 0; int counter = 0; int itemHeight = lv.GetItemRect(0).Height; int rowSum = itemHeight; if (hasGroups) { for (int g = 0; g <= lv.Groups.Count - 1; g++) { rowSum += itemHeight + 6; pages[pageCounter].headerIndices.Add(counter); for (int r = 0; r <= lv.Groups[g].Items.Count - 1; r++) { counter += 1; if (rowSum + itemHeight < maxHeight) { rowSum += itemHeight; rowCounter += 1; } else { pages[pageCounter] = new pageDetails { columns = pages[pageCounter].columns, rows = rowCounter, startCol = pages[pageCounter].startCol, startRow = pages[pageCounter].startRow, headerIndices = pages[pageCounter].headerIndices }; for (int x = 1; x <= maxPagesWide - 1; x++) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter].startRow, headerIndices = pages[pageCounter].headerIndices }; } pageCounter += maxPagesWide; for (int x = 0; x <= maxPagesWide - 1; x++) { pages.Add(pageCounter + x, new pageDetails { columns = pages[x].columns, rows = 0, startCol = pages[x].startCol, startRow = counter - 1, headerIndices = new List <int>() }); } rowSum = itemHeight * 2 + itemHeight + 6; rowCounter = 1; } if (counter == lv.Items.Count) { for (int x = 0; x <= maxPagesWide - 1; x++) { if (pages[pageCounter + x].rows == 0) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter + x].startRow, headerIndices = pages[pageCounter + x].headerIndices }; } } } } } } else { for (int r = 0; r <= lv.Items.Count - 1; r++) { counter += 1; if (rowSum + itemHeight < maxHeight) { rowSum += itemHeight; rowCounter += 1; } else { pages[pageCounter] = new pageDetails { columns = pages[pageCounter].columns, rows = rowCounter, startCol = pages[pageCounter].startCol, startRow = pages[pageCounter].startRow }; for (int x = 1; x <= maxPagesWide - 1; x++) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter].startRow }; } pageCounter += maxPagesWide; for (int x = 0; x <= maxPagesWide - 1; x++) { pages.Add(pageCounter + x, new pageDetails { columns = pages[x].columns, rows = 0, startCol = pages[x].startCol, startRow = counter - 1 }); } rowSum = itemHeight * 2; rowCounter = 1; } if (counter == lv.Items.Count) { for (int x = 0; x <= maxPagesWide - 1; x++) { if (pages[pageCounter + x].rows == 0) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter + x].startRow }; } } } } } maxPagesTall = pages.Count / maxPagesWide; if (hasGroups) { items = new ListViewItem[] { }; foreach (ListViewGroup g in lv.Groups) { items = items.Concat(g.Items.Cast <ListViewItem>().ToArray()).ToArray(); } } else { items = lv.Items.Cast <ListViewItem>().ToArray(); } }
/// <summary> /// build class pageDetails and add it /// </summary> /// <param name="myname"></param> /// <param name="mylink"></param> /// <param name="myclass"></param> public void AddPage(string myname, string mylink, string myclass) { pageDetails MyPage = new pageDetails(myname, mylink, myclass); AddPage(MyPage); }
/// <summary> /// the majority of this Sub is calculating printed page ranges /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <remarks></remarks> private void PrintDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) { //'this removes the printed page margins PrintDocument1.OriginAtMargins = true; PrintDocument1.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0); pages = new Dictionary <int, pageDetails>(); int maxWidth = Convert.ToInt32(PrintDocument1.DefaultPageSettings.PrintableArea.Width) - 40; int maxHeight = Convert.ToInt32(PrintDocument1.DefaultPageSettings.PrintableArea.Height) - 150 + Label1.Height; int pageCounter = 0; pages.Add(pageCounter, new pageDetails()); int columnCounter = 0; int columnSum = GVHerb.RowHeadersWidth; for (int c = 0; c <= GVHerb.Columns.Count - 1; c++) { if (columnSum + GVHerb.Columns[c].Width < maxWidth) { columnSum += GVHerb.Columns[c].Width; columnCounter += 1; } else { pages[pageCounter] = new pageDetails { columns = columnCounter, rows = 0, startCol = pages[pageCounter].startCol }; columnSum = GVHerb.RowHeadersWidth + GVHerb.Columns[c].Width; columnCounter = 1; pageCounter += 1; pages.Add(pageCounter, new pageDetails { startCol = c }); } if (c == GVHerb.Columns.Count - 1) { if (pages[pageCounter].columns == 0) { pages[pageCounter] = new pageDetails { columns = columnCounter, rows = 0, startCol = pages[pageCounter].startCol }; } } } maxPagesWide = pages.Keys.Max() + 1; pageCounter = 0; int rowCounter = 0; int rowSum = GVHerb.ColumnHeadersHeight; for (int r = 0; r <= GVHerb.Rows.Count - 2; r++) { if (rowSum + GVHerb.Rows[r].Height < maxHeight) { rowSum += GVHerb.Rows[r].Height; rowCounter += 1; } else { pages[pageCounter] = new pageDetails { columns = pages[pageCounter].columns, rows = rowCounter, startCol = pages[pageCounter].startCol, startRow = pages[pageCounter].startRow }; for (int x = 1; x <= maxPagesWide - 1; x++) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter + x].startRow }; } pageCounter += maxPagesWide; for (int x = 0; x <= maxPagesWide - 1; x++) { pages.Add(pageCounter + x, new pageDetails { columns = pages[x].columns, rows = 0, startCol = pages[x].startCol, startRow = r }); } rowSum = GVHerb.ColumnHeadersHeight + GVHerb.Rows[r].Height; rowCounter = 1; } if (r == GVHerb.Rows.Count - 2) { for (int x = 0; x <= maxPagesWide - 1; x++) { if (pages[pageCounter + x].rows == 0) { pages[pageCounter + x] = new pageDetails { columns = pages[pageCounter + x].columns, rows = rowCounter, startCol = pages[pageCounter + x].startCol, startRow = pages[pageCounter + x].startRow }; } } } } maxPagesTall = pages.Count / maxPagesWide; }
/// <summary> /// add class pageDetails /// </summary> /// <param name="MyPage"></param> public void AddPage(pageDetails MyPage) { MyPages.Add(MyPage); }