积极答复者
PrintPreviewDialog类,showdialog后,如何判断用户按下了打印机的图标按钮

问题
-
答案
-
你好,
在使用PrintPreviewDialog的时候,当打印按钮被按下,说明PrintDocument要开始打印,你可以在PrintDocument的BeginPrint事件中加入代码来判断是否开始打印。实际上,PrintPreviewDialog和Print都会触发PrintDocument的BeginPrint事件,只是一个用于预览另一个是实际的打印,所以还需要另外一个PrintDocument1.PrintController.IsPreview状态来判断是否是实际打印。最终的代码可能是这样的:
Private Sub PrintDocument1_BeginPrint(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint If PrintDocument1.PrintController.IsPreview = False Then ‘开始打印。。 End If End Sub
希望以上信息可以解决你的问题。
Regards,
Shanks Zen
MSDN Community Support | Feedback to us
- 已建议为答案 ThankfulHeartModerator 2012年5月8日 1:22
- 已标记为答案 难啃的VB 2012年5月8日 9:21
-
在使用PrintPreviewDialog中恐怕是不行的,但是可以在PrintPreviewControl是可以的,你只需要在更改完PageSettings后调用PrintPreviewControl.InvalidatePreview(http://msdn.microsoft.com/zh-cn/library/system.windows.forms.printpreviewcontrol.invalidatepreview.aspx) 方法来刷新文档预览。
如果需要PrintPreviewControl相关的代码,请告诉我,谢谢!
Regards,
Shanks Zen
MSDN Community Support | Feedback to us
谢谢您耐心的回复!
关于在出现打印预览之后可以再次进行页面设置(边距调整)的问题,我已经通过给PrintPreviewDialog中的工具条增加一个Item的办法实现了我想要的功能。
学无止境
- 已标记为答案 ThankfulHeartModerator 2012年5月9日 1:02
-
如果可以的话,不妨给出你的代码,谢谢!
下面是实现这个效果的代码,请指导!
Public Class Form1 Private WithEvents PrintDocument1 As New Printing.PrintDocument Private WithEvents PrintPriview As New PrintPreviewDialog Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click With PrintPriview .Document = PrintDocument1 .PrintPreviewControl.Zoom = 1.0 'PrintPreviewControl1 = .PrintPreviewControl Dim MyToolStrip As ToolStrip = .Controls("toolStrip1") Dim tmpImage As System.Drawing.Image '可以设置一张图片的 MyToolStrip.Items.Add("页面设置", tmpImage, New EventHandler(AddressOf DoPrintSetup)) '增加一个页面设置按钮 MyToolStrip.Items(MyToolStrip.Items.Count - 1).ForeColor = Color.Blue .WindowState = FormWindowState.Maximized .ShowDialog() End With End Sub Private Sub DoPrintSetup() MsgBox("页面设置的代码就可以写在这里了") End Sub End Class
学无止境
- 已标记为答案 ThankfulHeartModerator 2012年5月9日 5:27
全部回复
-
是我的问题提问得不对吗?
学无止境
不是,你这个问题没有直接答案的。我建议你使用Spy技术获取这个按钮的“ID”,然后引入其它对应的API处理。
大致思路如此,你可以到“msdnmg@microsoft.com”去提问,谢谢!
-
你好,
在使用PrintPreviewDialog的时候,当打印按钮被按下,说明PrintDocument要开始打印,你可以在PrintDocument的BeginPrint事件中加入代码来判断是否开始打印。实际上,PrintPreviewDialog和Print都会触发PrintDocument的BeginPrint事件,只是一个用于预览另一个是实际的打印,所以还需要另外一个PrintDocument1.PrintController.IsPreview状态来判断是否是实际打印。最终的代码可能是这样的:
Private Sub PrintDocument1_BeginPrint(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint If PrintDocument1.PrintController.IsPreview = False Then ‘开始打印。。 End If End Sub
希望以上信息可以解决你的问题。
Regards,
Shanks Zen
MSDN Community Support | Feedback to us
- 已建议为答案 ThankfulHeartModerator 2012年5月8日 1:22
- 已标记为答案 难啃的VB 2012年5月8日 9:21
-
在使用PrintPreviewDialog的时候,当打印按钮被按下,说明PrintDocument要开始打印,你可以在PrintDocument的BeginPrint事件中加入代码来判断是否开始打印。实际上,PrintPreviewDialog和Print都会触发PrintDocument的BeginPrint事件,只是一个用于预览另一个是实际的打印,所以还需要另外一个PrintDocument1.PrintController.IsPreview状态来判断是否是实际打印。最终的代码可能是这样的:
Private Sub PrintDocument1_BeginPrint(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint If PrintDocument1.PrintController.IsPreview = False Then ‘开始打印。。 End If End Sub
希望以上信息可以解决你的问题。
Regards,
Shanks Zen
MSDN Community Support | Feedback to us
十分感谢Shanks Zen版主的回复。
等了两天了,Shanks Zen版主回复的内容正是我想要的。
我想不再另开贴,继续请教关于这个问题,可以吗?
在PrintDocument1.PrintController.IsPreview=False时,也就是在出现打印预览之后可以再次进行页面设置(边距调整)吗?如何实现能不能给个例子啃一啃?
学无止境
-
在使用PrintPreviewDialog中恐怕是不行的,但是可以在PrintPreviewControl是可以的,你只需要在更改完PageSettings后调用PrintPreviewControl.InvalidatePreview(http://msdn.microsoft.com/zh-cn/library/system.windows.forms.printpreviewcontrol.invalidatepreview.aspx) 方法来刷新文档预览。
如果需要PrintPreviewControl相关的代码,请告诉我,谢谢!
Regards,
Shanks Zen
MSDN Community Support | Feedback to us
-
在使用PrintPreviewDialog中恐怕是不行的,但是可以在PrintPreviewControl是可以的,你只需要在更改完PageSettings后调用PrintPreviewControl.InvalidatePreview(http://msdn.microsoft.com/zh-cn/library/system.windows.forms.printpreviewcontrol.invalidatepreview.aspx) 方法来刷新文档预览。
如果需要PrintPreviewControl相关的代码,请告诉我,谢谢!
Regards,
Shanks Zen
MSDN Community Support | Feedback to us
谢谢您耐心的回复!
关于在出现打印预览之后可以再次进行页面设置(边距调整)的问题,我已经通过给PrintPreviewDialog中的工具条增加一个Item的办法实现了我想要的功能。
学无止境
- 已标记为答案 ThankfulHeartModerator 2012年5月9日 1:02
-
如果可以的话,不妨给出你的代码,谢谢!
下面是实现这个效果的代码,请指导!
Public Class Form1 Private WithEvents PrintDocument1 As New Printing.PrintDocument Private WithEvents PrintPriview As New PrintPreviewDialog Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click With PrintPriview .Document = PrintDocument1 .PrintPreviewControl.Zoom = 1.0 'PrintPreviewControl1 = .PrintPreviewControl Dim MyToolStrip As ToolStrip = .Controls("toolStrip1") Dim tmpImage As System.Drawing.Image '可以设置一张图片的 MyToolStrip.Items.Add("页面设置", tmpImage, New EventHandler(AddressOf DoPrintSetup)) '增加一个页面设置按钮 MyToolStrip.Items(MyToolStrip.Items.Count - 1).ForeColor = Color.Blue .WindowState = FormWindowState.Maximized .ShowDialog() End With End Sub Private Sub DoPrintSetup() MsgBox("页面设置的代码就可以写在这里了") End Sub End Class
学无止境
- 已标记为答案 ThankfulHeartModerator 2012年5月9日 5:27