* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Создание поддержки печати
8 февраля 2009
> Организация поддержки печати в приложении 1. Откройте форму Forml в окне дизайнера и перетащите на нее объект PrintDocumentc панели Toolbox — в области компонентов появится экземпляр одноимен- ного класса.
2. Дважды щелкните компонент Print Document I (print Document!), чтобы открыть об- работчик по умолчанию для события PrintPage, и добавьте к нему следующий код, отправляющий содержимое списка IstOrders на принтер: Visual Basic .NET DIM LeftMargin As Single = e. MarginBounds. Left Dim TopMargin As Single = e.MarginBounds.Top Dim MyLines As Single = 0 Dim YPosition As Single = 0 Dim Counter As Integer = 0 Dim CurrentLine As String Dim rtiyFont As New Font("Times New Roman", 16, FontStyle. Regular, _ Graphicsllnit. Pixel) 1 Подсчитать число строк на странице. MyLines = e.MarginBounds.Height / myFont.GetHeight(e.Graphics) ' Напечатать все строки файла, остэназ/мваясь в <онце каждой страницы. While Counter < MyLines And ItemCounter < = IstOrders.Items.Count CurrentLine = CType(lstOrders.Item$(ItemCounter}, String) YPosition - TopMargin + Counter * myFont.GetHeight(e.Graphics) e.Graphics.DrawString(CurrentLine, myFont, Brushes.Black. LeftMargin, YPosition, Nevj StringFormat()) Counter += 1 ItemCounter += 1 End While Если остались ненапечатанные строки, напечатать следующую страницу. If Not (ItemCounter - IstOrders.Items.Count - 1) Then e.HasMorePages = True Else e.HasMorePages - False End If Visual C# float LeftMargin = e.MarginBounds.Left; float TopMargin = e.MarginBounds.Top; float MyLines - 0; float YPosition = 0; int Counter = 0; string CurrentLine; Font myFont = new Font("Times New Roman", 16, FontStyle.Regular, GrapnicsUnit.Pixel): // Подсчитать число строк на странице. MyLines = e.MarginBounds,Height / myFont.GetHeight(e.Graphics); // Напечатать все строки файла, останавливаясь в конце каждой страницы, while (Counter < MyLines && ItemCounter <= IstOrders.Items.Count - 1) CurrentLine -: (string)lstOrders. Items[ItemCounter]; YPosition = TopMargin + Counter * myFont.GetHeight(e.Graphics); e.Graphics.DrawString(CurrentLine, myFont, Brushes.Black, LeftMargin, YPosition, new StringFormatO); Counter +- 1; IternCounter += 1; // Если остались ненапечатанные строки, напечатать следующую страницу. if (!(ItemCounter =- IstOrders.Items.Count - 1)) e.HasMorePages - t^ue; else e.HasMorePages - false; 3. Сразу после объявления метода добавьте переменную ItemCounter — она будет управлять печатью элементов списка: Visual Basic .NET Dim ItemCounter As Integer Visual C# int ItemCounter; 4. В окне дизайнера формы Forml дважды щелкните кнопку btnPrint и добавьте к открывшемуся обработчику вызов метода Print Document. Print, отправляющий со- держимое списка на принтер. Установите переменную ItemCounter в ноль, что- бы при инициации печати список печатался полностью; Visual Basic .NET ItemCounter = О printDocumentl.Print() Visual C# ItemCounter = 0; printDocumentl. PrintO; 5. Сохраните и протестируйте проект.