c# free pdf viewer : Add page numbers pdf files software Library project winforms .net windows UWP Pro_Silverlight_5_in_CSharp_4th_edition20-part83

CHAPTER 5  ELEMENTS 
189 
Figure 5-18. A RichTextBox with editing controls 
In this example, the user selects some portion of text (which may span multiple inline elements and 
multiple paragraphs) and then uses the buttons to toggle bold, italic, and underline formatting. The code 
is actually quite simple. The first step is to get a reference to the TextSelection object that represents the 
selection from the RichTextBox.Selection property: 
TextSelection selection = richTextBox.Selection; 
The TextSelection object provides information about the start point and end point of the selection 
(through the Start and End properties) and the selected content (through the Text and Xaml properties). 
If nothing is selected, the RichTextBox.Selection property will still return a valid TextSelection object, 
but its Text will be an empty string. 
The TextSelection object also provides the two methods you need to manage formatting: 
GetPropertyValue(), which tests the selection for a given formatting characteristic; and 
ApplyPropertyValue(), which sets the new formatting you want. For example, if you want to make the 
selected text bold, you simply need to manipulate the FontWeightProperty using ApplyPropertyValue(): 
selection.ApplyPropertyValue(Run.FontWeightProperty, FontWeights.Bold); 
Similarly, you can use GetPropertyValue() to check whether the currently selected text is bold: 
FontWeight currentBoldState; 
www.it-ebooks.info
Add page numbers pdf files - insert pages into PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide C# Users to Insert (Empty) PDF Page or Pages from a Supported File Format
add page numbers to pdf; adding page numbers in pdf file
Add page numbers pdf files - VB.NET PDF Page Insert Library: insert pages into PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use VB.NET APIs to Add a New Blank Page to PDF Document
adding a page to a pdf in reader; add page number to pdf print
CHAPTER 5  ELEMENTS 
190 
currentBoldState = (FontWeight)selection.GetPropertyValue(Run.FontWeightProperty); 
There’s one catch with this approach. If the selected text has mixed bold and normal text, the 
GetPropertyValue() method returns DependencyProperty.UnsetValue instead of a FontWeight. It’s up to 
you how you handle this case—typically, you’ll either bold the entire selection (as this example does) or 
do nothing at all. 
The following code shows the complete code that underpins the Bold button (represented by the 
button with the bold letter B in Figure 5-18). Depending on the selection, this code either applies or 
removes bold formatting. 
private void cmdBold_Click(object sender, RoutedEventArgs e) 
TextSelection selection = richTextBox.Selection; 
// If no text is selected, treat it as a selection of normal text. 
FontWeight currentState = FontWeights.Normal; 
// Try to get the bold state of the selected text. 
if (selection.GetPropertyValue(Run.FontWeightProperty) != 
DependencyProperty.UnsetValue) 
currentState =  
(FontWeight)selection.GetPropertyValue(Run.FontWeightProperty); 
if (currentState == FontWeights.Normal) 
selection.ApplyPropertyValue(Run.FontWeightProperty, FontWeights.Bold); 
else 
selection.ApplyPropertyValue(Run.FontWeightProperty, FontWeights.Normal); 
// A nice detail is to bring the focus back to the text box, so the user 
// can resume typing. 
richTextBox.Focus(); 
 Note  You’ll notice that this code doesn’t check for an empty selection. If no text is currently selected, clicking 
the Bold button applies bold formatting to the insertion point, so that when the user starts typing, the new text will 
be bold. Another possible approach is to enable the Bold button only when text is selected. You can manage the 
state of the Bold button by responding to the RichTextBox.SelectionChanged event. 
The code for the Italic and Underline buttons is virtually identical. The only difference is the 
property it uses—instead of checking and setting FontWeight, these code routines use the FontStyle and 
TextDecorations properties, respectively. 
www.it-ebooks.info
C# Create PDF Library SDK to convert PDF from other file formats
them the ability to count the page numbers of generated metadata adding control, you can add some additional Create PDF Document from Existing Files Using C#.
add page numbers to a pdf; adding page to pdf
C# Word - Word Create or Build in C#.NET
also offer them the ability to count the page numbers of generated using this Word document adding control, you can add some additional Create Word From PDF.
add page numbers to a pdf file; add page to existing pdf file
CHAPTER 5  ELEMENTS 
191 
Saving and Opening Rich Text Files 
If your application gives users the ability to edit rich text content, it’s highly likely that you need a way to 
store the final result. Fortunately, the RichTextBox makes this easy. Although Silverlight doesn’t have any 
built-in support for common rich text formats such as .rtf, .doc, or .docx, it does allow you retrieve its 
fully formatted contents as a XAML document using the RichTextBox.Xaml property. 
Here’s an example that copies the XAML markup to an ordinary text box so you can study it: 
txtFlowDocumentMarkup.Text = richTextBox.Xaml; 
Figure 5-19 shows the result. 
Figure 5-19. The XAML markup for a RichTextBox 
The XAML document that’s exposed by the RichTextBox.Xaml property consists of the text elements 
you learned about earlier (such as Section, Paragraph, and Run) and has the full formatting information 
specified as attributes. Because you can store this XAML content in a simple string, it’s easy to use any 
other technique you need to store it, such as submitting it to a web service that wraps a back-end 
database (Chapter 19) or saving it in a simple text file (Chapter 22). But if you can’t wait to see the details, 
check out the downloadable examples with this chapter, which allow you to save the content from a 
RichTextBox to a file on your hard drive and open it later. (The trick is the straightforward SaveFileDialog 
and OpenFileDialog classes, which you’ll consider in Chapter 22.) 
www.it-ebooks.info
C# PowerPoint - PowerPoint Creating in C#.NET
New PowerPoint File and Load PowerPoint from Other Files. them the ability to count the page numbers of generated creating toolkit, if you need to add some text
add page number pdf file; add page numbers to pdf files
C# Word - Word Creating in C#.NET
to Create New Word File and Load Word from Other Files. them the ability to count the page numbers of generated creating toolkit, if you need to add some text
add page number to pdf file; adding page numbers pdf file
CHAPTER 5  ELEMENTS 
192 
 Tip  To clear the content in a RichTextBox, call RichTextBox.Blocks.Clear(). 
Using Interactive Elements in a RichTextBox 
The RichTextBox stretches its capabilities beyond the display and editing of rich text content. It also 
supports interactive elements, such as the Hyperlink. 
The Hyperlink is an inline element that’s rendered as blue underlined text. It works in the same way 
as the HyperlinkButton control discussed earlier in this chapter. Like the HyperlinkButton, the 
Hyperlink can launch a web browser to show an external page (if you set the NavigateUrl property to an 
absolute URL) or send a frame in your application to a new XAML page (if you set NavigateUrl to a 
relative URL). Or, if you attach an event handler to the Click event, it can trigger a code routine that 
performs any action you want. Here’s an example: 
<RichTextBox Margin="5" x:Name="richText" IsReadOnly="True">  
<Paragraph>                 
<Hyperlink Click="cmdDoSomething_Click">Click this link.</Hyperlink> 
</Paragraph> 
</RichTextBox
There’s one catch. The hyperlinks in your document are active only if you set the 
RichTextBox.IsReadOnly property to true. Otherwise, the hyperlink looks the same, but it can’t be 
clicked (although its text can be edited). 
 Tip  Hyperlinks and other types of embedded controls don’t make much sense in in an editable document. But 
they make perfect sense if you’re showing some type of read-only content in the RichTextBox, such as product 
documentation or company information. 
The Hyperlink takes you to the very edge of what’s possible with the RichTextBox model of text 
elements. However, the RichTextBox has a convenient back door that lets you embed any Silverlight 
element alongside your rich text content. That back door is the InlineUIContainer, which hosts a full-
fledged Silverlight element. For example, you can use the InlineUIContainer to add a Button, CheckBox, 
Image, or even a DataGrid to your RichTextBox. Here’s an example: 
<RichTextBox Margin="5" x:Name="richText" IsReadOnly="True">  
<Paragraph Foreground="DarkRed" FontFamily="Trebuchet MS" FontSize="22" 
 FontWeight="Bold"> 
<InlineUIContainer> 
<Image Source="bookcover.jpg" Stretch="None"></Image> 
</InlineUIContainer> 
Chapter I 
</Paragraph
... 
</RichTextBox
www.it-ebooks.info
C# Excel - Excel Creating in C#.NET
to Create New Excel File and Load Excel from Other Files. them the ability to count the page numbers of generated creating toolkit, if you need to add some text
add a blank page to a pdf; add page to pdf
VB.NET TIFF: VB.NET Sample Codes to Sort TIFF File with .NET
to sort a multi-page TIFF file with page numbers using VB define the orders for the TIFF file page sorting by pageCount - 1 To 0 Step -1 newOrders.Add(i) Next
add a page to a pdf in reader; add page number to pdf document
CHAPTER 5  ELEMENTS 
193 
Figure 5-20 shows the result. Note that inline elements are placed inline with the current text line, as 
though they are ordinary characters. In other words, it’s not possible to have several lines of text wrap 
around a large element like an Image. 
Figure 5-20. Embedding an Image element in a RichTextBox 
The InlineUIContainer has two important limitations. First, if you want the embedded element to 
be interactive so that it can accept focus and receive input events, you must set the 
RichTextBox.IsReadOnly property to true. If you don’t, the user will still see the element and will still be 
able to edit the RichTextBox content—for example, the user will be able to delete the InlineUIContainer 
element or add text around it. However, the user won’t be able to click it, type into it, or otherwise 
interact with it. This is perfectly fine for an element like the Image but obviously less suitable for an 
element like the Button. 
The second limitation is that the InlineUIContainer isn’t represented in the document that’s 
returned by RichTextBox.Xaml. This is a significant shortcoming, because it means you won’t be able to 
load a ready-made XAML document that includes InlineUIContainer objects. Instead, you’ll be forced to 
add them programmatically. 
www.it-ebooks.info
C#: Use XImage.OCR to Recognize MICR E-13B, OCR-A, OCR-B Fonts
may need to scan and get check characters like numbers and codes. page.RecSettings. LanguagesEnabled.Add(Language.Other); page.RecSettings.OtherLanguage
add and remove pages from a pdf; add page number to pdf online
VB.NET Excel: VB Methods to Set and Customize Excel Rendering
treat every single Excel spreadsheet as a page in our An image consists of large numbers of dots, and the Our Excel converting add-on for VB.NET still supports
add page numbers pdf files; add page break to pdf
CHAPTER 5  ELEMENTS 
194 
The RichTextBlock 
Silverlight includes a specialized read-only version of the RichTextBox control called RichTextBlock. The 
internal architecture and display capabilities of the RichTextBlock closely parallel the RichTextBox. The 
difference is that the RichTextBlock control is designed to work in partnership with the 
RichTextBlockOverflow control to help you create more sophisticated layouts. 
The basic idea is simple—by using the RichTextBlock in combination with one or more linked 
RichTextBlockOverflow controls, you can split a single long document into several pieces. You can then 
arrange these pieces wherever you want in your page. Using this technique, you can quickly construct a 
multicolumn text display. Or, with a little more effort, you can build a newspaper-like layout that runs 
text around graphics and other display elements. 
To understand how the overflow system works, imagine you have a RichTextBlock like this: 
<RichTextBlock x:Name="richText"></RichTextBlock> 
Right now, if you have more content than will fit in the display area of the RichTextBlock, the 
RichTextBlock cuts off the text that doesn’t fit. But consider what happens if you add a 
RichTextBlockOverflow control to your page: 
<RichTextBlock x:Name="richText"></RichTextBlock> 
... 
<RichTextBlockOverflow x:Name="overflow1"></RichTextBlockOverflow> 
And then link the RichTextBlock to the RichTextBlockOverflow using the OverflowContentTarget 
property and an element binding expression (like the kind you saw in Chapter 2): 
<RichTextBlock x:Name="richText" 
OverflowContentTarget="{Binding ElementName=overflow1}"></RichTextBlock> 
... 
<RichTextBlockOverflow x:Name="overflow1"></RichTextBlockOverflow> 
Now, if the RichTextBlock is constrained in size, and it has more content than it can fit, the extra will 
leak into the linked RichTextBlockOverflow. The RichTextBlockOverflow can be anywhere in the same 
page. And if you want to create a complex layout you can use multiple RichTextBlockOverflow controls. 
You just need to use the OverflowContentProperty in each one to link to the next box in the sequence: 
<RichTextBlockOverflow x:Name="overflow1" 
OverflowContentTarget="{Binding ElementName=overflow2}"></RichTextBlockOverflow> 
To see this behavior in action, you can build a simple example. The following markup creates a 
three-column Grid. The leftmost column holds the RichTextBlock. The second and third columns hold a 
RichTextBlockOverflow that catches the excess content: 
<Grid x:Name="LayoutRoot" Background="White" Margin="15"> 
<Grid.ColumnDefinitions> 
<ColumnDefinition></ColumnDefinition> 
<ColumnDefinition></ColumnDefinition> 
<ColumnDefinition></ColumnDefinition> 
</Grid.ColumnDefinitions> 
<RichTextBlock x:Name="richText"  
OverflowContentTarget="{Binding ElementName=overflow1}"></RichTextBlock> 
<RichTextBlockOverflow x:Name="overflow1" Grid.Column="1" 
OverflowContentTarget="{Binding ElementName=overflow2}"></RichTextBlockOverflow> 
<RichTextBlockOverflow x:Name="overflow2" Grid.Column="2"></RichTextBlockOverflow> 
1
www.it-ebooks.info
C# Excel: Create and Draw Linear and 2D Barcodes on Excel Page
barcode image to the first page page.AddImage(barcodeImage C#.NET Excel Barcode Creating Add-on imaging controls, PDF document, image to pdf files and components
add and delete pages in pdf online; add pdf pages to word document
VB.NET Image: Guide to Convert Images to Stream with DocImage SDK
Follow this guiding page to learn how to easily convert a single image or numbers of it an image processing component which can enable developers to add a wide
add page number to pdf hyperlink; adding a page to a pdf file
CHAPTER 5  ELEMENTS 
195 
</Grid> 
Figure 5-21 shows the result. If the page is wide enough, all the content fits in the left column. But as 
the user shrinks the browser window, the extra content gets added first to the second and then to the 
third column. 
Figure 5-21. Overflowing text into multiple columns 
www.it-ebooks.info
CHAPTER 5  ELEMENTS 
196 
If the last RichTextBlockOverflow can’t handle the remaining content, it cuts off the end of your 
document. Unfortunately, there’s no easy way to improve on this situation. You could wrap the 
RichTextBlock and RichTextBlockOverflow controls in a ScrollViewer, but that would simply allow the 
RichTextBlock in the first column to grow tall enough to fit the entire document, leaving the other two 
columns blank. What this problem really needs is the sophistication of the WPF flow document model, 
which Silverlight doesn’t support. 
When working with overflow text, your main point of interaction (both in XAML and code) is the 
RichTextBlock. You use the RichTextBlock.Blocks collection to set and manipulate the full content, and 
to adjust its formatting. The RichTextBlockOverflow controls simply manage where that content is 
displayed.  
<RichTextBlock x:Name="richText" 
OverflowContentTarget="{Binding ElementName=overflow1}"> 
<RichTextBlock.Blocks>            
<Paragraph FontSize="20" FontWeight="Bold" ...> 
<Run>Chapter 1</Run> 
</Paragraph> 
<Paragraph FontSize="11" ...> 
<Run>
... 
</Run> 
</Paragraph> 
... 
</RichTextBlock.Blocks> 
</RichTextBlock> 
Once you’ve created a chain of RichTextBlockOverflow controls, you can get creative. For example, 
you can use a more complex Grid to place an Image element in between RichTextBlockOverflow 
controls. Or, if you’re really ambitious, you can stack a number of RichTextBlockOverflow controls with 
different, explicitly-set widths, to create a countoured edge. Compared to WPF’s support for flow 
documents, it’s still a bit of kludge. For example, there are plenty of layout rules you’d need to create a 
truly seamless, professional document display experience (like a way to keep headings together with the 
subsequent text, prevent stray lines from being separated from a paragraph, manage hyphenation, and 
so on. But it does give developers another useful tool. 
Range-Based Controls 
Silverlight includes three controls that use the concept of a range. These controls take a numeric value 
that falls in between a specific minimum and maximum value. These controls—ScrollBar, Slider, and 
ProgressBar—derive from the RangeBase class (which itself derives from the Control class). The 
RangeBase class adds a ValueChanged event, a Tooltip property, and the range properties shown in 
Table 5-6. 
www.it-ebooks.info
CHAPTER 5  ELEMENTS 
197 
Table 5-6. Properties of the RangeBase Class 
Name 
Description 
Value 
This is the current value of the control (which must fall between the minimum and 
maximum). By default, it starts at 0. Contrary to what you might expect, Value isn’t an 
integer—it’s a double, so it accepts fractional values. You can react to the ValueChanged 
event if you want to be notified when the value is changed. 
Maximum 
This is the upper limit (the largest allowed value). The default value is 1. 
Minimum 
This is the lower limit (the smallest allowed value). The default value is 0. 
SmallChange This is the amount the Value property is adjusted up or down for a “small change.” The 
meaning of a small change depends on the control (and may not be used at all). For the 
ScrollBar and Slider, this is the amount the value changes when you use the arrow keys. 
For the ScrollBar, you can also use the arrow buttons at either end of the bar. The default 
SmallChange is 0.1. 
LargeChange This is the amount the Value property is adjusted up or down for a “large change.” The 
meaning of a large change depends on the control (and may not be used at all). For the 
ScrollBar and Slider, this is the amount the value changes when you use the Page Up and 
Page Down keys or when you click the bar on either side of the thumb (which indicates 
the current position). The default LargeChange is 1. 
Ordinarily, there’s no need to use the ScrollBar control directly. The higher-level ScrollViewer 
control, which wraps two ScrollBar controls, is typically much more useful. (The ScrollViewer was 
covered in Chapter 3.) However, the Slider and ProgressBar are more useful on their own. 
The Slider 
The Slider is a specialized control that’s occasionally useful. You might use it to set numeric values in 
situations where the number itself isn’t particularly significant. For example, it makes sense to set the 
volume in a media player by dragging the thumb in a slider bar from side to side. The general position of 
the thumb indicates the relative loudness (normal, quiet, loud), but the underlying number has no 
meaning to the user. 
Here’s an example that creates the horizontal slider shown in Figure 5-22: 
<Slider Orientation="Horizontal" Minimum="0" Maximum="10" Width="100" /> 
www.it-ebooks.info
CHAPTER 5  ELEMENTS 
198 
Figure 5-22. A basic slider 
Unlike WPF, the Silverlight slider doesn’t provide any properties for adding tick marks. However, as 
with any control, you can change its appearance while leaving its functionality intact using the control 
template feature described in Chapter 15. 
The ProgressBar 
The ProgressBar indicates the progress of a long-running task. Unlike the slider, the ProgressBar isn’t 
user interactive. Instead, it’s up to your code to periodically increment the Value property. By default, 
the Minimum value of a ProgressBar is 0, and the Maximum value is 100, so the Value corresponds to the 
percentage of work done. You’ll see an example with the ProgressBar in Chapter 6, with a page that 
downloads a file from the Web and shows its progress on the way. 
One neat trick that you can perform with the ProgressBar is using it to show a long-running status 
indicator, even if you don’t know how long the task will take. You do this by setting the IsIndeterminate 
property to true: 
<ProgressBar Height="18" Width="200" IsIndeterminate="True"></ProgressBar> 
When setting IsIndeterminate, you no longer use the Minimum, Maximum, and Value properties. 
No matter what values these properties have, the ProgressBar will show a hatched pattern that travels 
continuously from left to right. This pattern indicates that there’s work in progress, but it doesn’t provide 
any information about how much progress has been made so far. 
Date Controls 
Silverlight adds two date controls, neither of which exists in the WPF control library. Both are designed 
to allow the user to choose a single date. 
The Calendar control displays a calendar that’s similar to what you see in the Windows operating 
system (for example, when you configure the system date). It shows a single month at a time and allows 
you to step through from month to month (by clicking the arrow buttons) or jump to a specific month 
(by clicking the month header to view an entire year and then clicking the month). 
The DatePicker requires less space. It’s modeled after a simple text box, which holds a date string in 
long or short date format. However, the DatePicker provides a drop-down arrow that, when clicked, 
www.it-ebooks.info
Documents you may be interested
Documents you may be interested