我正在使用免费软件脚本打印DataGrid View,但我遇到的问题是虽然我已经对单元格着色,但是当我将DataGrid传递给PrintDGV免费软件代码时,它不会打印颜色。我不熟悉VB.NET或DataGrids所以这是我第一次尝试这样做。
目前在“打印视图”中的显示方式:
代码:
最初我认为我可以为DataGrid的单元格着色并将其传递给免费软件进行打印,而免费软件也会打印出背景颜色,但似乎不是这样......
不确定是不是这样,但是你走了:
Imports System.Collections.Generic
' Print Current Schedule Grid Form
' This form displays a list of the print options.
' When you press "OK", control is returned to the Officer Availability window where the specs are read and the actual printing is done.
' You can choose to limit the number of columns, from the Officer area, that are printed
' You can also choose to limit the # rows that are printed to the range selected in schedule.
Public Class PrintOptions
' Form Events
Public Sub New(ByVal availableFields As List(Of String))
InitializeComponent()
' Add all of the displayed Officer specification columns to the columns available to be printed
For Each field As String In availableFields
chklst.Items.Add(field, True)
Next
End Sub
Private Sub PrintOptions_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Set the Print Defaults - Print all rows by default and fit calendar to page width by default
rdoAllRows.Checked = True
chkFitToPageWidth.Checked = False
End Sub
' Form Butten Events
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
End Sub
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
Me.DialogResult = Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub
' Read Form Properties
Public Function GetSelectedColumns() As List(Of String)
' Scroll through the list of available columns and return a list of the columns to be printed
Dim lst As New List(Of String)
For Each item As Object In chklst.CheckedItems
lst.Add(item.ToString)
Next
Return lst
End Function
Public ReadOnly Property PrintTitle() As String
' Return the title to be used when printing
Get
Return txtTitle.Text
End Get
End Property
Public ReadOnly Property PrintAllRows() As Boolean
' Are all rows to be printed or should only the rows selected on the Grid in the Officer Availability window be printed
Get
Return rdoAllRows.Checked
End Get
End Property
Public ReadOnly Property FitToPageWidth() As Boolean
' Compress grid width to fit on page
Get
Return chkFitToPageWidth.Checked
End Get
End Property
End Class
答案 0 :(得分:0)
似乎免费软件为您移除了着色(对于打印视图来说似乎是合法的)。浏览代码我看到PrintPreviewDialog被调用。看起来好像是魔术发生的地方。你也可以粘贴代码吗?
答案 1 :(得分:0)
通过了解如何更改对我有用的单元格边框颜色,我解决了这个问题。这是片段:
' Initialize the random-number generator.
Randomize()
' Generate random value between 1 and 6.
MyAlpha = CInt(Int((254 * Rnd()) + 0))
' Initialize the random-number generator.
Randomize()
' Generate random value between 1 and 6.
MyRed = CInt(Int((254 * Rnd()) + 0))
' Initialize the random-number generator.
Randomize()
' Generate random value between 1 and 6.
MyGreen = CInt(Int((254 * Rnd()) + 0))
' Initialize the random-number generator.
Randomize()
' Generate random value between 1 and 6.
MyBlue = CInt(Int((254 * Rnd()) + 0))
Dim penColor As New Pen(Color.FromArgb(MyAlpha, MyRed, MyGreen, MyBlue))
' Drawing Cells Borders
e.Graphics.DrawRectangle(penColor, New Rectangle(ColumnLeft(ColPage, ColAt), tmpTop, ColumnWidth(ColPage, ColAt), CellHeight))