我的问题是,我创建了一个“扩展”RichTextBox控件,该控件使用本机API添加了标准控件中缺少的许多RichEdit特性(例如:在选择的w/o上修改单个字体属性,更改其他字体属性,将单词包装为打印机,如WordPad等)。作为控件的一部分,我公开了一个PrintDocument,用于打印RichTextBox的格式化内容。当字包装设置为"Wrap“时,我会将SendMessage消息设置为RichTextBox,并使其包装到适当的长度。
当某个东西(用户/代码)更改我控件的WordWrap属性时,这一切都很好。但是,如果在那之后修改了PrintDocument,我就无法知道它了。因此,即使用户已经更改了PrintDocument上的页边距,我的RichTextBoxEx在更改WordWrap属性之前也不会重新发送新宽度的EM_SETTARGETDEVICE。
我看到了一些克服这一问题的选择,但我并不是其中任何一个的忠实粉丝。我现在拥有的是:
我真的认为#2是我必须使用的选项,但是对于下一个实例来说,它并不是非常可重用的,我需要一些类似的功能。我想我要寻找的是一种将“泛型PropertyChanged事件”附加到任何现有类属性的方法,因为这将适用于未来的情况。急着想看看你们有什么给我的-)
发布于 2010-02-06 21:33:26
只是跟踪我的PrintDocumentEx (和相关的)类没有工作。查看PrintDialog和相关控件,这是因为它们使用本机方法来自动更新PrintDocument。因此,我附加到"Ex“类中的属性的事件从未触发,因为set访问器从未被调用过。
发布于 2009-12-20 20:29:37
如果我正确理解了您的问题,您所需的信息将在更改WordWrap属性时发送。
如果更改了其他内容,则不会发生事件更新打印文档。下次更改WordWrap属性时,将发送所有信息。
解决这一问题的方法是在更改要发送到打印文档的属性时更改WordWrap属性。将其更改为临时值,然后再次将其更改。
https://stackoverflow.com/questions/1871103
复制相似问题