Print the RichTextBox

J

James Wong

Hi,

I use the RichTextBox in my program.
It will use different language in this RichTextBox (chinese and english
characters), and it set the "DualFont" and use different fonts.
By the way, how can I print out this content to printer easily?

Thanks!

James
 
J

James Wong

Hi,

I have another questions for the RichTextBox.

1) How can i get the height & width of content in this RichTextBox with font
format?
2) Can I set the position layout of RichTextBox in paper?

Thanks!

James
 
L

Linda Liu [MSFT]

Hi James,
1) How can i get the height & width of content in this RichTextBox with
font format?

RichTextBox has a ContentsResized event, which will bring us the new
requested size in its event args. Is it what you need?
2) Can I set the position layout of RichTextBox in paper?

I'm sorry that I couldn't understand what you mean. Could you please
explain more?

I look forward to your reply.


Sincerely,
Linda Liu
Microsoft Online Community Support

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
J

James Wong

Hi Linda,

I use the DualFont function in RichTextBox, but it seems not work.

example 1:
RichTextBoxPrintCtrl1.LanguageOption = RichTextBoxLanguageOptions.DualFont
RichTextBoxPrintCtrl1.Text = "{some chinese characters} ABCDEF"
RichTextBoxPrintCtrl1.Font = New Font("{chinese font}", 12)
RichTextBoxPrintCtrl1.Font = New Font("Gill Sans Ultra Bold", 40)

It occurs two fonts ("{chinese font}" & "Gill Sans Ultra Bold"), but the
font size is 40.
-----------------------------------------------------------------------------------------------------------

example 2:
RichTextBoxPrintCtrl1.LanguageOption = RichTextBoxLanguageOptions.DualFont
RichTextBoxPrintCtrl1.Text = "{some chinese characters} ABCDEF"
RichTextBoxPrintCtrl1.Font = New Font("Gill Sans Ultra Bold", 40)
RichTextBoxPrintCtrl1.Font = New Font("{chinese font}", 12)

It occurs one font only ("{chinese font}"), but the font size is 12.
-----------------------------------------------------------------------------------------------------------

Furthermore, I read this article. (
http://support.microsoft.com/?scid=kb;EN-US;811401 )
If my project has many RichTextBox, can I print these contents in one paper?

By the way, how can I set the coordinates of print out paper using
RichTextBox?
e.g. adjust to center, adjust 2 cm in left side...

Thanks~

James
 
L

Linda Liu [MSFT]

Hi James,

This is a quick note to let you know that I am researching on this issue
and will get it back to you ASAP.

I appreciate your patience.


Sincerely,
Linda Liu
Microsoft Online Community Support
 
L

Linda Liu [MSFT]

Hi James,

Sorry for my delayed reply.

The LanguageOption property of RichTextBox is new in .NET 2.0. This
property gets or sets a value that indicates RichTextBox settings for Input
Method Editor (IME) and Asian language support. The default value of the
LanguageOption property of RichTextBox is AutoFont|DualFont. That's to say,
RichTextBox supports DualFont by default.

When a richtextbox supports DualFont, it doesn't means that we could set an
English font for ASCII text and an Asian font for Asian text at one time.
Instead, we should make use of the SelectionFont property of the
richtextbox to set fonts for the two kinds of text respectively.

For example, we could add two buttons called button1 and button2 on the
form. Click button1 to set an English font for ASCII text and click button2
to set an Asian font for Asian text. To set the ASCII text in the
richtextbox to the English font, select the ASCII text in the richtextbox
and click button1. To set the Asian text in the richtextbox to the Asian
font, select the Asian text in the richtextbox and click button2.
If my project has many RichTextBox, can I print these contents in one
paper?

In the sample provided in the Microsoft support website, the actual
printing work is done by the SendMessage Win32 API, which is called in the
Print method in the RichTextBoxPrintCtrl class. This line of code is 'res =
SendMessage(Handle, EM_FORMATRANGE, wparam, lparam);'. Note that the
richtextboxctrl control's Handle is passed to the SendMessage function.
This means that we could only print out the content in ONE richtextboxctrl
control at one time.

To print out the contents in several richtextboxctrls at one time in one
paper, we could copy the contents in all the richtextboxctrls into one
richtextboxctrl and print the total content out and restore the content in
the richtextboxctrl after the printing is finished. Suppose there're two
richtextboxctrls on the form. The following is a sample to print out
contents in both richtextboxctrls at one time.

void printDocument1_BeginPrint(object sender,
System.Drawing.Printing.PrintEventArgs e)
{
this.richTextBoxPrintCtrl2.SelectAll();
this.richTextBoxPrintCtrl2.Copy();

this.richTextBoxPrintCtrl1.Focus();
this.richTextBoxPrintCtrl1.SelectionStart =
this.richTextBoxPrintCtrl2.TextLength;
this.richTextBoxPrintCtrl1.Paste();

checkPrint = 0;
}

void printDocument1_EndPrint(object sender,
System.Drawing.Printing.PrintEventArgs e)
{
this.richTextBoxPrintCtrl1.Undo();
}
how can I set the coordinates of print out paper using RichTextBox? e.g.
adjust to center, adjust 2 cm in left side...

You could make use of the DefaultPageSettings property of PrintDocument to
set the page margin. The following is a sample.

this.printDocument1.DefaultPageSettings.Margins.Left = 200;

Hope this helps.
If you have anything unclear, please feel free to let me know.


Sincerely,
Linda Liu
Microsoft Online Community Support
 
J

James Wong

Hi Linda,

thanks for the reply

James



Linda Liu said:
Hi James,

Sorry for my delayed reply.

The LanguageOption property of RichTextBox is new in .NET 2.0. This
property gets or sets a value that indicates RichTextBox settings for
Input
Method Editor (IME) and Asian language support. The default value of the
LanguageOption property of RichTextBox is AutoFont|DualFont. That's to
say,
RichTextBox supports DualFont by default.

When a richtextbox supports DualFont, it doesn't means that we could set
an
English font for ASCII text and an Asian font for Asian text at one time.
Instead, we should make use of the SelectionFont property of the
richtextbox to set fonts for the two kinds of text respectively.

For example, we could add two buttons called button1 and button2 on the
form. Click button1 to set an English font for ASCII text and click
button2
to set an Asian font for Asian text. To set the ASCII text in the
richtextbox to the English font, select the ASCII text in the richtextbox
and click button1. To set the Asian text in the richtextbox to the Asian
font, select the Asian text in the richtextbox and click button2.

paper?

In the sample provided in the Microsoft support website, the actual
printing work is done by the SendMessage Win32 API, which is called in the
Print method in the RichTextBoxPrintCtrl class. This line of code is 'res
=
SendMessage(Handle, EM_FORMATRANGE, wparam, lparam);'. Note that the
richtextboxctrl control's Handle is passed to the SendMessage function.
This means that we could only print out the content in ONE richtextboxctrl
control at one time.

To print out the contents in several richtextboxctrls at one time in one
paper, we could copy the contents in all the richtextboxctrls into one
richtextboxctrl and print the total content out and restore the content in
the richtextboxctrl after the printing is finished. Suppose there're two
richtextboxctrls on the form. The following is a sample to print out
contents in both richtextboxctrls at one time.

void printDocument1_BeginPrint(object sender,
System.Drawing.Printing.PrintEventArgs e)
{
this.richTextBoxPrintCtrl2.SelectAll();
this.richTextBoxPrintCtrl2.Copy();

this.richTextBoxPrintCtrl1.Focus();
this.richTextBoxPrintCtrl1.SelectionStart =
this.richTextBoxPrintCtrl2.TextLength;
this.richTextBoxPrintCtrl1.Paste();

checkPrint = 0;
}

void printDocument1_EndPrint(object sender,
System.Drawing.Printing.PrintEventArgs e)
{
this.richTextBoxPrintCtrl1.Undo();
}

adjust to center, adjust 2 cm in left side...

You could make use of the DefaultPageSettings property of PrintDocument to
set the page margin. The following is a sample.

this.printDocument1.DefaultPageSettings.Margins.Left = 200;

Hope this helps.
If you have anything unclear, please feel free to let me know.


Sincerely,
Linda Liu
Microsoft Online Community Support
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top