首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# PrintDocument更改事件

C# PrintDocument更改事件
EN

Stack Overflow用户
提问于 2009-12-09 01:35:11
回答 2查看 1.5K关注 0票数 8

我的问题是,我创建了一个“扩展”RichTextBox控件,该控件使用本机API添加了标准控件中缺少的许多RichEdit特性(例如:在选择的w/o上修改单个字体属性,更改其他字体属性,将单词包装为打印机,如WordPad等)。作为控件的一部分,我公开了一个PrintDocument,用于打印RichTextBox的格式化内容。当字包装设置为"Wrap“时,我会将SendMessage消息设置为RichTextBox,并使其包装到适当的长度。

当某个东西(用户/代码)更改我控件的WordWrap属性时,这一切都很好。但是,如果在那之后修改了PrintDocument,我就无法知道它了。因此,即使用户已经更改了PrintDocument上的页边距,我的RichTextBoxEx在更改WordWrap属性之前也不会重新发送新宽度的EM_SETTARGETDEVICE。

我看到了一些克服这一问题的选择,但我并不是其中任何一个的忠实粉丝。我现在拥有的是:

  1. 添加了一个UpdatePrintDocument()方法或类似的方法,这些方法需要在控件(即父窗体上的PageSetupDialog )更新了PrintDocument中的设置之后调用。缺点:我会分配控制,所以我想使它尽可能友好。虽然我可能记得在任何时候调用该方法,但我成功地更新了其他人可能没有的PrintDocument设置。Pro: implement.
  2. Create很简单,它是一个新的PrintDocumentEx类,它以PrintDocument为基础,实现所需的“更改”事件。缺点:可能不够,可能需要创建PrintSettingsEx、PageSettingsEx等。支持:实现一次,没有人需要再担心它了。

我真的认为#2是我必须使用的选项,但是对于下一个实例来说,它并不是非常可重用的,我需要一些类似的功能。我想我要寻找的是一种将“泛型PropertyChanged事件”附加到任何现有类属性的方法,因为这将适用于未来的情况。急着想看看你们有什么给我的-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-06 21:33:26

只是跟踪我的PrintDocumentEx (和相关的)类没有工作。查看PrintDialog和相关控件,这是因为它们使用本机方法来自动更新PrintDocument。因此,我附加到"Ex“类中的属性的事件从未触发,因为set访问器从未被调用过。

票数 1
EN

Stack Overflow用户

发布于 2009-12-20 20:29:37

如果我正确理解了您的问题,您所需的信息将在更改WordWrap属性时发送。

如果更改了其他内容,则不会发生事件更新打印文档。下次更改WordWrap属性时,将发送所有信息。

解决这一问题的方法是在更改要发送到打印文档的属性时更改WordWrap属性。将其更改为临时值,然后再次将其更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1871103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档