Вопрос : Платы печатание в VB.NET

Using System.Drawing.Printing я посылаю содержание textbox к принтеру.  Однако, я теряю платы внутри textbox.  Может любое обеспечить меня с некоторым методом позволит платы?  В настоящее время они получают съеденными перед printing.

Thanks.
class=

Ответ : Платы печатание в VB.NET

Здравствулте!, hbash,

Да, то я понадеялся увидеть.   Добавления вы требуете относительно несколько.

Для того чтобы продемонстрировать вам нужно сделать, я создал просто форму с одной кнопкой и добавил ваш iHandlePrinting тип к ему.  Кодий за кнопкой необходимо этим же как ваша подпрограмма PrintDocument () и показано в следующий фрагменте.  Я также показывал доработанный вариант iHandlePrinting типа.  Для того чтобы сделать его легким найти поврежденные линии, я маркировал их с комментарием который начинает с характерами «~~~».

Вы увидите в моем Кодем образца для кнопки формы что я заменил трудный закодированный шнур для вашего свойства TextBox.Text.  Для вашего Кодего, как раз извлекайте линии с hardcoded шнуром и uncomment первоначально линия.  

Я также изменял 2 линии в iHandlePrinting типе не относят к стопа табуляции.  Я маркировал эти при комментарии начиная с характерами «~~~*».  Я высоки рекомендую что вы используете и «вариант точный» и «вариант только» в всем из вашего кодирвоания.  Малое экстренное усилие, котор оно требует сохранит вас от много загадочных проблем и головных болей кодирвоания.

Oh, и как раз как бортовое примечание, много (возможно большинств) кодеров используют называя конвенцию где первое письмо имени вашего iHandlePrinting типа могло предложить что это будет поверхность стыка довольно чем тип.  (По общему признанию, верхушка - случай «я» использован часее чем строчная буква.)

Приветственные восклицания,
Рэнди
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
Общественный тип Form1

    Приватная подводная лодка Button1_Click (прислужник ByVal как System.Object, ByVal e как System.EventArgs) регулирует Button1.Click

        Тусклое strToPrint как шнур = «здесь» & vbTab & «шнур с некоторым» & vbTab & _
                                   «врезал стопа табуляции» & vbTab & «и» & vbCrLf & _
                                   vbTab & vbTab & «новая линия» & vbTab & «слишком»

        Тусклое m_printer как новый iHandlePrinting

        m_printer.PrinterFont = новая купель («курьер новый», 9, FontStyle.Bold)

        'Кодий R завистливости ПРОТИВ

        m_printer.DefaultPageSettings.Margins.Left = 10
        m_printer.DefaultPageSettings.Margins.Top = 10
        m_printer.DefaultPageSettings.Margins.Bottom = 50

        'Установите свойство TextToPrint  
        m_printer.TextToPrint = ~~~ "" & vbCrLf &                    strToPrint 'в вашем Кодем, извлекают эту линию
        ''' m_printer.TextToPrint = "" & vbCrLf & ~~~ и uncomment Me.txt SelectedRecord.Text 'эта линия.

        'Установите необходимый стопа табуляции.  Заметьте что ~~~ каждой спецификации платы 'добавляет линии подобные к.
        'смещение от ~~~ ранее                          Tab 'это до призывать
        Тусклые sngaTabStops как одиночно () = {100.0F, 150.0F, 300.0F}         '~~~ метод печати.
        m_printer.TabStops = ~~~                               sngaTabStops '

        'Побегите команда на принтер  
        m_printer. Печать ()

    Подводная лодка конца
Тип конца

Ввозы System.Drawing
Ввозы System.Drawing.Printing

Общественный тип iHandlePrinting: Наследует Printing.PrintDocument

#Region «перемеююые свойства»
    '''  
    Перемеююый свойства ''' для купели, котор потребитель желает использовать
    '''  
    '''  
    Приватное _font как купель

    '''  
    Перемеююый свойства ''' для текста к была напечатана
    '''  
    '''  
    Приватное _text как шнур

    Приватные _tabStops как одиночная () = {0.0F}       '~~~ добавляют этот блок.

Зона #End

#Region «свойства типа»

    Стопы табуляции общественного имущества () как одиночное ()  '~~~ добавляют это свойство.
        Получите                                 '~~~
            Возвратите ~~~                _tabStops '
        Конец получает                             '~~~
        Комплект (значение ByVal как одиночно ())        '~~~
            _tabStops = ~~~               значения '
        ~~~ установленное                             концом '
    ~~~ свойства                            конца '

    '''  
    Свойство ''' для того чтобы держать текст должен быть напечатанным
    '''  
    '''  
    Шнур a '''
    '''  
    Общественное имущество TextToPrint () как шнур
        Получите
            Возвратите _text
        Конец получает
        Установите (значение ByVal как шнур)
            _text = значение
        Комплект конца
    Свойство конца

    Общественная функция ShowPrintDialog () как булевский    'тип ~~~* должна быть объявлена!
        ShowPrintDialog (я)
        Возвращенно True
    Закончите функцию

    Приватная функция ShowPrintDialog (myDocumentToPrint ByRef как PrintDocument) как булевский    'тип ~~~* должна быть объявлена!
        Тусклое psd как новое PageSetupDialog

        С psd
            .AllowMargins = True
            .AllowOrientation = True
            .AllowPaper = True
            .AllowPrinter = True
            .ShowHelp = True
            .ShowNetwork = True

            . Документ = myDocumentToPrint
        Конец с
        psd.ShowDialog ()
        Возвращенно True
    Закончите функцию

    '''  
    Свойство ''' для того чтобы держать купель, котор потребители желают использовать
    '''  
    '''  
    '''  
    '''  
    Общественное имущество PrinterFont () как купель
        'Позволяет потребителю отвергнуть купель невыполнения обязательства
        Получите
            Возвратите _font
        Конец получает
        Установите (значение ByVal как купель)
            _font = значение
        Комплект конца
    Свойство конца
Зона #End

#Region «конструктор типа»
    '''  
    Конструктор ''' пустое
    '''  
    '''  
    Общественные Sub новые ()
        'Установите поток архива
        MyBase.New ()
        'Instantiate вне свойство текста к пустому шнуру
        _text = String.Empty
    Подводная лодка конца

    '''  
    Конструктор ''' для того чтобы выступить наш предмет с иничиативой печатание
    ''' и текст он имеет предполагаемое для того чтобы быть печатание
    '''  
    Текст ''' будет напечатан
    '''  
    Общественная Sub новая (str ByVal как шнур)
        'Установите поток архива
        MyBase.New ()
        'Установите нашу стоимость имущества текста
        _text = str
    Подводная лодка конца
Зона #End

#Region «OnBeginPrint»
    '''  
    Преодоление автоматического действия ''' метод OnBeginPrint невыполнения обязательства предмета PrintDocument
    '''  
    '''  
    '''  
    Защищено отвергает Sub OnBeginPrint (ByVal e как Printing.PrintEventArgs)
        'Побегите низкопробное Кодий
        MyBase.OnBeginPrint (e)

        'Проверите для того чтобы увидеть если потребитель обеспечил купель
        'если они не сделали после этого, то мы не выполняем обязательство к Тимес Неш Роман
        Если _font ничего после этого
            'Создайте купель, котор нам
            _font = новая купель («Тимес Неш Роман», 10)
        Закончитесь если
    Закончите подводную лодку
Зона #End

#Region «OnPrintPage»
    '''  
    Преодоление автоматического действия ''' метод OnPrintPage невыполнения обязательства PrintDocument
    '''  
    '''  
    ''' Это обеспечивает логику печати для нашего документа
    Защищено отвергает Sub OnPrintPage (ByVal e как Printing.PrintPageEventArgs)
        'Побегите низкопробное Кодий
        MyBase.OnPrintPage (e)

        'Объявите местные нужные перемеююые
        Статическое curChar как интежер
        Тусклое printHeight как интежер
        Тусклое printWidth как интежер
        Тусклое leftMargin как интежер
        Тусклое rightMargin как интежер
        Тусклые линии как Int32
        Затемните чарсы как Int32

        'Установите размер и допустимые пределы зоны печати
        С MyBase.DefaultPageSettings
            printHeight = .PaperSize.Height -. Margins.Top -. Margins.Bottom
            printWidth = .PaperSize.Width -. Margins.Left -. Margins.Right
            leftMargin =. Margins.Left 'x
            rightMargin =. Margins.Top   'y
        Конец с

        'Проверите если потребитель выбранный напечатать в режиме ландшафта
        'если они сделали после этого, то нам нужно обменить параметры высоты/ширины
        Если MyBase.DefaultPageSettings.Landscape после этого
            Тусклое tmp как интежер
            tmp = printHeight
            printHeight = printWidth
            printWidth = tmp
        Закончитесь если

        'Теперь нам нужно обусловить общее количество линий
        'мы идем быть печатание
        Тусклые numLines как Int32 = CInt (printHeight/PrinterFont.Height)

        'Создайте печатание прямоугольника для нашего документа
        Затемните printArea как новое RectangleF (leftMargin, rightMargin, printWidth, printHeight)

        'Используйте тип StringFormat для плана текста нашего документа
        Затемните форму как новое StringFormat (StringFormatFlags.LineLimit)
        ~~~ format.SetTabStops (0.0F, _tabStops                ) 'добавляет эту линию.

        'Приспособьте так много характеры по мере того как мы можем в зону печати      

        e.Graphics.MeasureString (_text. Подстрока (RemoveZeros (curChar)), PrinterFont, новое SizeF (printWidth, printHeight), форма, чарсы, линии)

        'Напечатайте страницу
        e.Graphics.DrawString (_text. Подстрока (RemoveZeros (curChar)), PrinterFont, Brushes.Black, printArea, форма)

        'Увеличьте в настоящее время отсчет чарса
        curChar чарсы +=

        'Detemine если будет больше текста, котор нужно напечатать, то, если
        'будет говорить, котор принтер там приходитьле
        Если curChar  <>
    Функция ''' для того чтобы заменить все нули внутри размер до 1
    ''' Нул mess вверх зона печатание
    '''  
    Значение ''', котор нужно проверить
    '''  
    '''  
    Общественная функция RemoveZeros (значение ByVal как интежер) как интежер
        'Проверите значение ое в функцию,
        'если значение 0 (нул) после этого, то возвратите 1,
        'в противном случае возвращение, котор значение прошло внутри
        Выберите значение случая
            Случай 0
                Возвращение 1
            Случай еще
                Возвращенное значение
        Конец отборный
    Функция конца
Зона #End

Тип конца
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us