0
這是一個PDFSharp問題,但我認爲它更符合vb.net中對象引用的工作方式。使用方法來更改對象參考值
所以我有一些代碼,看起來像這樣:
Dim page as PdfPage = pdf1.AddPage()
Dim graphics as XGraphics = XGraphics.FromPdfPage(pdfPage)
因此,這會自然地產生的圖形XGraphics和PdfPage對象,我需要。
現在,當我需要的網頁添加到我創建的PDF文檔,我稱之爲代碼:
page = pdf1.AddPage()
graphics = XGraphics.FromPdfPage(pdfPage)
當然,還有其他的東西我做的一樣好,如添加XTextFormatters,定義我的起始X,Y座標等等。但足以說,作爲我這個懶惰的人,我嘗試編寫一種方法,允許我傳入所需的所有變量,並自動爲我更新所有這些變量。因此,在短期,是這樣的:
Private Sub ConductPrinting()
Dim pdf1 as New Pdf
Dim page as PdfPage = pdf1.AddPage()
Dim graphics as XGraphics = XGraphics.FromPdfPage(pdfPage)
'Printing code here
'Printing code here
'Printing code here
'Start new page code
pdfPage = pdf1.AddPage()
graphics = XGraphics.FromPdfPage(pdfPage)
End Sub
我想寫一個StartNewPage()
方法,是這樣的:
Private Sub StartNewPage(pdf1 As Pdf, page As PdfPage, graphics As XGraphics) As Integer
pdfPage = pdf1.AddPage()
graphics = XGraphics.FromPdfPage(pdfPage)
End Sub
使代碼塊可以是這樣的,而不是:
Private Sub ConductPrinting()
Dim pdf1 as New Pdf
Dim page as PdfPage = pdf1.AddPage()
Dim graphics as XGraphics = XGraphics.FromPdfPage(pdfPage)
'Printing code here
'Printing code here
'Printing code here
'Start new page code
StartNewPage(pdf1, page, graphics)
End Sub
你會如何去做這件事?因爲這不起作用;頁面和圖形都仍然引用舊的頁面和圖形。
我認爲你的'page'和'pdfPage'變量/類型有點混淆。如果它們以我懷疑它們的方式混在一起,那麼你需要'Private Sub StartNewPage(pdf1 As Pdf,ByRef page As PdfPage,ByRef graphics As XGraphics)' - 參見[按值和引用傳遞參數(Visual Basic) ](https://msdn.microsoft.com/en-us/library/ddck1z30.aspx?f=255&MSPPError=-2147217396)。您是否使用[Option Strict On](https://msdn.microsoft.com/en-us/library/zcd4xwzs.aspx)? –
ByRef關鍵字完美工作。我忘了一切。添加它作爲答案,我將它標記爲正確:) – Wakka02