Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > проблемы с печатью


Автор: Bezonik 25.10.2009, 21:37
Здравствуйте, мне необходима помощ при решении одного вопроса

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

Печать документа происходит, но ВНИМАНИЕ!!!! печатается на стандартном листе бумаге толко первая строчка, и толко та часть которая помещается на листке, остальная часть не печатается!!!!!таким образом
, при печате не происходит перехода на печать новой строки.....



привожу фрагмент кода

Код

private void toolStripButton3_Click(object sender, EventArgs e) // кнопка для записи печати документа
        {
            if (printDialog1.ShowDialog() == DialogResult.OK)
            {
                printDocument1.Print();
            }
        }


        private void OnBeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
        {
            char[] param = { '\n' };
            if (printDialog1.PrinterSettings.PrintRange == PrintRange.Selection)
            {
                output = TipDiscTextBox.SelectedText.Split(param);
            }
            else
            {
                output = TipDiscTextBox.Text.Split(param);
            }
            int i = 0;
            char[] trimParam = { '\r' };
            foreach (string s in output)
            {
                output[i++] = s.TrimEnd(trimParam);
            }
        }


        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            int linesPrinted = 0;
            int x = e.MarginBounds.Left;
            int y = e.MarginBounds.Top;
            int nachSim = 0;
         
            Brush brush = new SolidBrush(TipDiscTextBox.ForeColor);
          
            while (linesPrinted < output.Length)
            {
                int dlinaStr = output[linesPrinted].Length + 1;
                TipDiscTextBox.Select(nachSim, dlinaStr);
                nachSim += dlinaStr;
               
                e.Graphics.DrawString(output[linesPrinted], TipDiscTextBox.Font, brush, x, y);
                y += 15;
                if (y >= e.MarginBounds.Bottom)
                {
                    e.HasMorePages = true;
                }
                else
                {
                    e.HasMorePages = false;
                }
                linesPrinted++;
            }
        }


если кто сталкивался с такой проблемой, или знает ее решение, прозьба помочь!!! Спасибо!!!!

Автор: albert21 5.11.2010, 09:56
Перенос слов происходит если задать ограничивающую прямоугольную область при формировании текстовой строки вывода

Код

printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPagePrecedent); 

private void printDoc_PrintPagePrecedent(Object sender, PrintPageEventArgs e)
{
     Font printFontTitle = new Font("Courier New", 14, FontStyle.Bold);            
     e.Graphics.DrawString("Очень длинная строка очень длинная строка очень длинная строка", printFontTitle, Brushes.Black, new RectangleF(50, 50,200,200), new StringFormat());
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)