2015-02-10 164 views
1

我的DataGridView我修改它的唯一日期,但是當涉及到Printing preview它也給我時間。我如何刪除它?而且我希望它自動調整每列打印日期修改

輸出樣本:

enter image description here

這裏是我的代碼

的PrintDocument:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
    { 
     try 
     { 
      printDocument1.DefaultPageSettings.Landscape = true; 
      //Set the left margin 
      int iLeftMargin = e.MarginBounds.Left; 
      //Set the top margin 
      int iTopMargin = e.MarginBounds.Top; 
      //Whether more pages have to print or not 
      bool bMorePagesToPrint = false; 
      int iTmpWidth = 0; 

      //For the first page to print set the cell width and header height 
      if (bFirstPage) 
      { 
       foreach (DataGridViewColumn GridCol in dataGridView1.Columns) 
       { 
        iTmpWidth = (int)(Math.Floor((double)((double)GridCol.Width/
            (double)iTotalWidth * (double)iTotalWidth * 
            ((double)e.MarginBounds.Width/(double)iTotalWidth)))); 

        iHeaderHeight = (int)(e.Graphics.MeasureString(GridCol.HeaderText, 
           GridCol.InheritedStyle.Font, iTmpWidth).Height) + 2; 

        // Save width and height of headres 
        arrColumnLefts.Add(iLeftMargin); 
        arrColumnWidths.Add(iTmpWidth); 
        iLeftMargin += iTmpWidth; 
       } 
      } 
      //Loop till all the grid rows not get printed 
      while (iRow <= dataGridView1.Rows.Count - 1) 
      { 
       DataGridViewRow GridRow = dataGridView1.Rows[iRow]; 
       //Set the cell height 
       iCellHeight = GridRow.Height + 5; 
       int iCount = 0; 
       //Check whether the current page settings allo more rows to print 
       if (iTopMargin + iCellHeight >= e.MarginBounds.Height + e.MarginBounds.Top) 
       { 
        bNewPage = true; 
        bFirstPage = false; 
        bMorePagesToPrint = true; 
        break; 
       } 
       else 
       { 
        if (bNewPage) 
        { 
         //Draw Header 
         e.Graphics.DrawString("Purchase Order Arrival Monitoring", new Font(dataGridView1.Font, FontStyle.Bold), 
           Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top - 
           e.Graphics.MeasureString("Customer Summary", new Font(dataGridView1.Font, 
           FontStyle.Bold), e.MarginBounds.Width).Height - 13); 

         String strDate = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToShortTimeString(); 
         //Draw Date 
         e.Graphics.DrawString(strDate, new Font(dataGridView1.Font, FontStyle.Bold), 
           Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width - 
           e.Graphics.MeasureString(strDate, new Font(dataGridView1.Font, 
           FontStyle.Bold), e.MarginBounds.Width).Width), e.MarginBounds.Top - 
           e.Graphics.MeasureString("Customer Summary", new Font(new Font(dataGridView1.Font, 
           FontStyle.Bold), FontStyle.Bold), e.MarginBounds.Width).Height - 13); 

         //Draw Columns     
         iTopMargin = e.MarginBounds.Top; 
         foreach (DataGridViewColumn GridCol in dataGridView1.Columns) 
         { 
          e.Graphics.FillRectangle(new SolidBrush(Color.LightGray), 
           new Rectangle((int)arrColumnLefts[iCount], iTopMargin, 
           (int)arrColumnWidths[iCount], iHeaderHeight)); 

          e.Graphics.DrawRectangle(Pens.Black, 
           new Rectangle((int)arrColumnLefts[iCount], iTopMargin, 
           (int)arrColumnWidths[iCount], iHeaderHeight)); 

          e.Graphics.DrawString(GridCol.HeaderText, GridCol.InheritedStyle.Font, 
           new SolidBrush(GridCol.InheritedStyle.ForeColor), 
           new RectangleF((int)arrColumnLefts[iCount], iTopMargin, 
           (int)arrColumnWidths[iCount], iHeaderHeight), strFormat); 
          iCount++; 
         } 
         bNewPage = false; 
         iTopMargin += iHeaderHeight; 
        } 
        iCount = 0; 
        //Draw Columns Contents     
        foreach (DataGridViewCell Cel in GridRow.Cells) 
        { 
         if (Cel.Value != null) 
         { 
          e.Graphics.DrawString(Cel.Value.ToString(), Cel.InheritedStyle.Font, 
             new SolidBrush(Cel.InheritedStyle.ForeColor), 
             new RectangleF((int)arrColumnLefts[iCount], (float)iTopMargin, 
             (int)arrColumnWidths[iCount], (float)iCellHeight), strFormat); 
         } 
         //Drawing Cells Borders 
         e.Graphics.DrawRectangle(Pens.Black, new Rectangle((int)arrColumnLefts[iCount], 
           iTopMargin, (int)arrColumnWidths[iCount], iCellHeight)); 

         iCount++; 
        } 
       } 
       iRow++; 
       iTopMargin += iCellHeight; 
      } 

      //If more lines exist, print another page. 
      if (bMorePagesToPrint) 
       e.HasMorePages = true; 
      else 
       e.HasMorePages = false; 
     } 
     catch (Exception exc) 
     { 
      MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 

BeginPrint:

try 
     { 
      strFormat = new StringFormat(); 
      strFormat.Alignment = StringAlignment.Near; 
      strFormat.LineAlignment = StringAlignment.Center; 
      strFormat.Trimming = StringTrimming.EllipsisCharacter; 

      arrColumnLefts.Clear(); 
      arrColumnWidths.Clear(); 
      iCellHeight = 0; 
      iRow = 0; 
      bFirstPage = true; 
      bNewPage = true; 

      // Calculating Total Widths 
      iTotalWidth = 0; 
      foreach (DataGridViewColumn dgvGridCol in dataGridView1.Columns) 
      { 
       iTotalWidth += dgvGridCol.Width; 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 

按鈕打印:

private void button4_Click(object sender, EventArgs e) 
    { 
     //Open the print dialog 
     PrintDialog printDialog = new PrintDialog(); 
     printDialog.Document = printDocument1; 
     printDialog.UseEXDialog = true; 

     //Get the document 
     if (DialogResult.OK == printDialog.ShowDialog()) 
     { 
      printDocument1.DocumentName = "Test Page Print"; 
      printDocument1.Print(); 
     } 

     //Open the print preview dialog 
     PrintPreviewDialog objPPdialog = new PrintPreviewDialog(); 
     objPPdialog.Document = printDocument1; 
     objPPdialog.ShowDialog(); 

    } 

回答

1

此時在你的代碼

e.Graphics.DrawString(Cel.Value.ToString(), Cel.InheritedStyle.Font, 
             new SolidBrush(Cel.InheritedStyle.ForeColor), 
             new RectangleF((int)arrColumnLefts[iCount], (float)iTopMargin, 
             (int)arrColumnWidths[iCount], (float)iCellHeight), strFormat); 

檢查Cel.Value是一個DateTime。然後用ToString格式化(「MM/dd/yyyy」)。

+0

我在這個代碼Cel.Value.ToString(「MM/dd/yyyy」)中有一個錯誤「沒有過載的方法」 – 2015-02-10 06:22:35

+0

您是否在DateTime之前投出Cell.Value? ((DateTime)Cell.Value).ToString(「MM/dd/yyyy」) – sanguaire 2015-02-10 07:21:27

+0

答案解決了您的問題嗎? – sanguaire 2015-02-11 07:16:09