Ограничение ввода многострочного текстового поля, чтобы все было напечатано - PullRequest
3 голосов
/ 02 августа 2011

Я уверен, что это общая проблема, я не знаю, есть ли общее решение. Моя проблема в том, что когда пользователь просматривает указанное многострочное текстовое поле в графическом интерфейсе, он может просто прокрутить вниз, а не проблема. Однако, когда я прихожу на печать, определенный текст иногда выходит за пределы данной области для этого текстового поля.

Мы оставим это простым и скажем, что это не форматированное текстовое поле, поэтому пользователь не может выбрать более крупный шрифт, который может поэтому уйти со страницы. хмммф пересечь эту невесту, если мне нужно =)

Так я считал;

Использование ограничения по количеству символов, но затем, если вы просто несколько раз вернете карету, это закончится тем, что уйдет вниз.

Или ограничение «строки», которое я не совсем уверен, как реализовать, но тоже не показалось правильным

Наконец, я прихожу к выводу, что когда вы печатаете указанное многострочное текстовое поле, вы должны просто расширить область печатного документа, чтобы она соответствовала тому, какой текст был введен. Если это самое элегантное решение, может кто-нибудь указать мне правильное направление для реализации такой функции?

Подумайте о поле для заметок, в котором пользователь может печатать столько, сколько он хочет, и цель состоит в том, чтобы печатать все напечатанное.

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Вы звоните yourTextBox.DrawToBitMap?Все, что делает, - это создает растровое изображение того, что появляется на экране, оно не выполняет вывод на принтер, разметку строк, разрывы строк, шрифты принтера, поля, ориентацию, разбиение на страницы или что-либо еще, что связано с печатью.

Если вы хотите отправить текст на принтер, используя все функции, упомянутые выше, вам придется использовать класс System.Drawing.Printing.PrintDocument и работать со всеми вещами, которые требуются принтерам для текстовых ящиков.

0 голосов
/ 10 августа 2011

Как и почему вы печатаете WinForm?Я знаю, что это не отвечает на ваш вопрос, но при печати WinForm в качестве документа возникнут проблемы такого типа, и я могу гарантировать, что по мере того, как вы выпускаете приложение для большего количества пользователей, будут возникать и другие причуды, которые необходимо будет исправить.

Если вам абсолютно необходимо распечатать форму, и вы хотите ограничить содержимое в вашем TextBox наилучшим решением, которое я могу предложить, это заставить шрифт быть шрифтом фиксированной ширины фиксированного размера, и пользователь может 'не могу изменить его.Подсчитайте, сколько символов может поместиться в TextBox и установите это значение как MexLength для элемента управления.

Очевидно, пользователь может нажать клавишу возврата / ввода, которая будет использовать один символ, но будет занимать одну целую строку,Чтобы исправить это, изменили событие TextBox TextChange для обработки символа новой строки - вы можете либо убрать его из текста, либо обновить свойство MaxLength TextBox на меньшее подходящее значение.

Возможно, сНесколько незначительных настроек, очевидные изменения, мои рекомендации должны безопасно дать вам то, что вы хотите.Тем не менее, я настоятельно рекомендую поискать другой механизм печати для вашей формы.

Используйте на свой страх и риск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...