限制多行文本框输入以便打印所有内容

时间:2011-08-02 15:30:00

标签: c# winforms

我确定这是一个常见问题,我不知道是否有一个共同的解决方案。我的问题是当用户在GUI中查看所述多行文本框时,他们可以向下滚动,而不是问题。然而,当我来打印时,某些文本偶尔会从该文本框的给定区域的底部开始。

我们会保持简单,并说它不是一个富文本框,因此用户无法选择更大的字体,因此可能会离开页面。如果我需要的话,hmmph穿过那个新娘=)

所以我考虑过了;

使用字符限制,但如果你只是多次返回马车,这将最终离开底部。

或“行”限制,我不完全确定如何实施,但似乎也不正确

最后,我得出的结论是,当您打印所述多行文本框时,您必须展开打印文档上的区域以适合所输入的任何文本。如果这是最优雅的解决方案,任何人都能指出我正确的方向来实现这样的功能吗?

想想一个笔记字段,用户可以根据需要输入,并打算确保打印所有输入内容。

2 个答案:

答案 0 :(得分:1)

你打电话给yourTextBox.DrawToBitMap吗?所有这一切都是创建屏幕上显示的位图,它不执行打印机输出,行布局,换行符,打印机字体,边距,方向,分页或其他与打印有关的内容。

如果要将文本发送到打印机,处理上述所有功能,则必须使用System.Drawing.Printing.PrintDocument类并处理打印机需要textBoxes为您完成的所有操作。

答案 1 :(得分:0)

如何以及为何打印WinForm?我知道这不能回答你的问题,但打印WinForm作为文档会出现这些类型的问题,我可以保证,当你向更多用户发布你的应用程序时,会出现更多需要修复的怪癖。 / p>

如果您绝对必须打印表单,并且您希望限制TextBox中的内容,我可以提供的最佳解决方案是强制字体为固定大小的固定宽度字体,并且用户无法修改它。计算TextBox中可以容纳的字符数,并将该值设置为控件上的MexLength

显然,用户可以点击返回/输入键,它将使用一个字符,但会消耗一整行。要解决此问题,请更改TextBox的TextChange事件以处理换行符 - 您可以从文本中删除它或将TextBox的MaxLength属性更新为更小的适当值。

通过一些小的调整,明显的调整我的建议应该安全地得到你想要的。不过,我强烈建议您为表单寻找另一种打印机制。

使用风险自负。