If the user selects multiple paragraphs with different indentations, the SelectionIndent property
returns Nothing. The code examines the value of the SelectionIndent property and, if it’s Nothing, it
moves both controls to the left edge. This way, the user can slide the controls and set the indenta-
tions for multiple paragraphs. Or you can set the sliders according to the indentation of the first or
last paragraph in the selection. Some applications make the handles gray to indicate that the selected
text doesn’t have uniform indentation, but unfortunately you can’t gray the sliders and keep them
enabled. Of course, you can always design a custom control. The TrackBar controls are too tall for
this type of interface and can’t be made very narrow (as a result, the interface of the RTFPad appli-
cation isn’t very elegant).
The File Menu
The RTFPad application’s File menu contains the usual Open, Save, and Save As commands, which
are implemented with the LoadFile and SaveFile methods. Listing 7.7 shows the implementation of
the Open command in the File menu.
Listing 7.7:  The Open Command
Private Sub FileOpen_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles FileOpen.Click
If DiscardChanges() Then
OpenFileDialog1.Filter = “RTF Files|*.RTF|DOC Files|” & _
“*.DOC|Text Files|*.TXT|All Files|*.*”
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
fName = OpenFileDialog1.FileName
Editor.LoadFile(fName)
Editor.Modified = False
End If
End If
End Sub
The fNamevariable is declared on the Form level and holds the name of the currently open file.
It’s set every time a new file is successfully opened and used by the Save command to automatically
save the open file, without prompting the user for a filename.
DiscardChanges() is a function that returns a Boolean value, depending on whether the 
control’s contents can be discarded or not. The function starts by examining the Editor control’s
Modified property. If True, it prompts the user as to whether he wants to discard the edits. 
Depending on the value of the Modified property and the user’s response, the function returns a
Boolean value. If the DiscardChanges() function returns True, the program goes on and opens a 
new document. If the function returns False, the handler exits. Listing 7.8 shows the Discard-
Changes() function.
319
THE RICHTEXTBOX CONTROL
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
File conversion pdf to tiff - Convert PDF to tiff images in C#.net, ASP.NET MVC, Ajax, WinForms, WPF
Online C# Tutorial for How to Convert PDF File to Tiff Image File
how to convert pdf to tiff format online; .net pdf to tiff
File conversion pdf to tiff - VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.net, ASP.NET MVC, Ajax, WinForms, WPF
Free VB.NET Guide to Render and Convert PDF Document to TIFF
save pdf to tiff; pdf to grayscale tiff
Listing 7.8: The DiscardChanges() Function
Function DiscardChanges() As Boolean
If Editor.Modified Then
Dim reply As MsgBoxResult
reply = MsgBox(“Text hasn’t been saved. Discard changes?”, _
MsgBoxStyle.YesNo)
If reply = MsgBoxResult.No Then
Return False
Else
Return True
End If
Else
Return True
End If
End Function
The Modified property becomes True after typing the first character and isn’t reset back to False.
The RichTextBox control doesn’t handle this property very intelligently and doesn’t reset it to False
even after saving the control’s contents to a file. The application’s code sets the 
Editor.Modified
property to False after creating a new document, as well as after saving the current document.
The Save As command (Listing 7.9) prompts the user for a filename and then stores the Editor
control’s contents to the specified file. It also sets the fNamevariable to the file’s path, so that the
Save command can use it. The fNamevariable is declared at the beginning of the code, outside any
procedure.
Listing 7.9: The Save As Command
Private Sub FileSaveAs_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles FileSaveAs.Click
SaveFileDialog1.Filter = “RTF Files|*.RTF|DOC Files|” & _
“*.DOC|Text Files|*.TXT|All Files|*.*”
SaveFileDialog1.DefaultExt = “RTF”
If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
fName = SaveFileDialog1.FileName
Editor.SaveFile(fName)
Editor.Modified = False
End If
End Sub
The Save command’s code is similar, only it doesn’t prompt the user for a filename. It calls the
SaveFile method passing the fNamevariable as argument. If the fNamevariable has no value (in other
words, if a user attempts to save a new document with the Save command), then the code activates
the event handler of the Save As command automatically. It also resets the control’s Modified prop-
erty to False. The code behind the Save command is shown in Listing 7.10.
Chapter 7 MORE WINDOWS CONTROLS
320
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Online Convert PDF file to Word. Best free online PDF Conversion
area. Then just wait until the conversion from Tiff/Tif to PDF is complete and download the file. The perfect conversion tool. Your
create tiff file from pdf; pdf to tiff converter
Online Convert PDF file to Tiff. Best free online PDF Tif
area. Then just wait until the conversion from PDF to Tiff is complete and download the file. The perfect conversion tool. Your Tiff
convert pdf file to tiff file; pdf to multipage tiff
Listing 7.10: The Save Command
Private Sub FileSave_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles FileSave.Click
If fName <> “” Then
Editor.SaveFile(fName)
Editor.Modified = False
Else
FileSaveAs_Click(sender, e)
End If
End Sub
The Edit Menu
The Edit menu contains the usual commands for exchanging data through the Clipboard (Copy,
Cut, Paste), Undo/Redo commands, and a Find command to invoke the Find and Replace dialog
box. All the commands are almost trivial, thanks to the functionality built into the control. The
basic Cut, Copy, and Paste commands call the RichTextBox control’s Copy, Cut, and Paste methods
to exchange information with other applications through the Clipboard. If you aren’t familiar with
the Clipboard’s methods, all you need to know to follow this example are the SetText method,
which copies a string to the Clipboard, and the GetText method, which copies the Clipboard’s con-
tents to a string variable. The Copy, Cut, and Paste commands are shown in Listing 7.11.
Listing 7.11: The Copy, Cut, and Paste Commands
Private Sub EditCopy_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles EditCopy.Click
Editor.Copy()
End Sub
Private Sub EditCut_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles EditCut.Click
Editor.Cut()
End Sub
Private Sub EditPaste_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles EditPaste.Click
Try
Editor.Paste()
Catch exc As Exception
MsgBox(“Can’t paste current clipboard’s contents”)
End Try
End Sub
As you recall from the discussion of the Paste command, we can’t use the CanPaste method,
because it’s not trivial; you have to handle each data type differently. By using the exception handler,
we allow the user to paste all types of data the RichTextBox control can accept, and we display a
message when an error occurs.
321
THE RICHTEXTBOX CONTROL
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
C# TIFF: C#.NET Code to Convert TIFF Image File
Online C# tutorial for high-fidelity Tiff image file conversion from MS Office Word, Excel, and PowerPoint document. Convert PDF to Tiff Using C#.
pdf to tiff file conversion; how to convert pdf to tiff format
C# Create PDF from Tiff Library to convert tif images to PDF in C#
a quick evaluation of our XDoc.PDF file conversion functionality tif"; String outputFilePath = Program.RootPath + "\\" Output.pdf"; // Load a TIFF file.
convert pdf to tiff format; .net convert pdf to tiff
The Undo and Redo commands of the Edit menu are coded as follows. First, we must display
the name of the action to be undone or redone in the Edit menu. When the Edit menu is selected, the
Select event is fired. This event takes place before the Click event, so I’ve inserted a few lines of code
that read the name of the most recent action that can be undone or redone and print it next to the
Undo or Redo command. If there’s no such action, the program will disable the corresponding
command. Listing 7.12 is the code that’s executed when the Edit menu is dropped.
Listing 7.12: Setting the Captions of the Undo and Redo Commands
Private Sub EditMenu_Select(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles EditMenu.Select
If Editor.UndoActionName <> “” Then
EditUndo.Text = “Undo “ & Editor.UndoActionName
EditUndo.Enabled = True
Else
EditUndo.Text = “Undo”
EditUndo.Enabled = False
End If
If Editor.RedoActionName <> “” Then
EditRedo.Text = “Redo “ & Editor.RedoActionName
EditRedo.Enabled = True
Else
EditRedo.Text = “Redo”
EditRedo.Enabled = False
End If
End Sub
When the user selects one of the Undo and Redo commands, we simply call the appropriate
method from within the menu item’s Click event handler (Listing 7.13).
Listing 7.13: Undoing and Redoing Actions
Private Sub EditUndo_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles EditUndo.Click
If Editor.CanUndo Then Editor.Undo()
End Sub
Private Sub EditRedo_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles EditRedo.Click
If Editor.CanRedo Then Editor.Redo()
End Sub
Calling the CanUndo and CanRedo method is unnecessary, because if there’s no corresponding
action the two menu items will be disabled, but an additional check is no harm. Should there be an
“unknown” action that the control can’t undo, these If statements will prevent the control from
attempting to perform the undo action.
Chapter 7 MORE WINDOWS CONTROLS
322
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Online Convert Excel to PDF file. Best free online export xlsx
The perfect conversion tool. Your Excel file is converted to look just the same as it does in your office software. Creating a PDF from xlsx/xls has never been
converting pdf to tiff format; online pdf to tiff converter
C# TIFF: TIFF Editor SDK to Read & Manipulate TIFF File Using C#.
1. Tiff to PDF/Jpeg conversion. 2. Word/Excel/PPT/PDF/Jpeg to Tiff conversion. Tiff File Processing in C#. Refer to this online tutorial page, you will see:
convert pdf file to tiff format; convert pdf to tiff file online
The Format Menu
The commands of the Format menu control the alignment of the text and the font attributes of the
current selection. The Font command displays the Font dialog box and then assigns the font selected
by the user to the current selection. Listing 7.14 shows the code behind the Font command.
Listing 7.14: The Font Command
Private Sub FormatFont_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles FormatFont.Click
If Not Editor.SelectionFont Is Nothing Then
FontDialog1.Font = Editor.SelectionFont
Else
FontDialog1.Font = Nothing
End If
If FontDialog1.ShowDialog() = DialogResult.OK Then
Editor.SelectionFont = FontDialog1.Font
End If
End Sub
Notice that the code preselects a font on the dialog box, which is the font of the current selec-
tion. If the current selection isn’t formatted with a single font, then no font is preselected. You can
modify the code so that it displays the font of the first character in the selection.
To enable the Apply button of the Font dialog box, set the control’s ShowApply property to
True and insert the following statement in its Apply event handler. Select the FontDialog1 control
in the Objects drop-down list of the code editor, and then select the Apply event in the Events drop-
down list. When the declaration of the event handler appears, insert the statement that applies the
font selected on the Font dialog box to the current selection:
Private Sub FontDialog1_Apply(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles FontDialog1.Apply
Editor.SelectionFont = FontDialog1.Font
End Sub
The options of the Align menu set the RichTextBox control’s SelectionAlignment property to
different members of the HorizontalAlignment enumeration. The Align 
Left command, for
example, is implemented with the following statement:
Editor.SelectionAlignment = HorizontalAlignment.Left
The Search & Replace Dialog Box
The Find command in the Edit menu opens the dialog box shown in Figure 7.14, which the user can
use to perform various search and replace operations (whole-word or case-sensitive match, or both).
The code behind the Command buttons on this form is quite similar to the code for the Search &
Replace dialog box of the TextPad application, with one basic difference: it uses the control’s Find
method. The Find method of the RichTextBox control performs all types of searches, and some of
its options are not available with the InStr() function.
323
THE RICHTEXTBOX CONTROL
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
.NET PDF Document Viewing, Annotation, Conversion & Processing
Convert PDF to Word (.docx). Convert PDF to images, like Tiff. Convert image files to PDF. File & Page Process. Create new file, load PDF from existing files.
convert pdf to tiff file; pdf to tiff converter online
C# PDF Converter Library SDK to convert PDF to other file formats
in C#, you can easily perform file conversion from PDF document to image or document, or from PDF document to other file formats, like multi-page TIFF file.
pdf converter to tiff online; pdf to tiff open source c#
To invoke the Search & Replace dialog box (Listing 7.15), the Find command calls the Show
method of a variable that represents the dialog box.
Listing 7.15: Displaying the Search & Replace Dialog Box
Private Sub EditFind_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles EditFind.Click
If fndForm Is Nothing Then
fndForm = New FindForm()
End If
fndForm.Show()
End Sub
fndFormis declared on the Form level with the following statement:
Dim fndForm As FindForm
The dialog box should have access to the Editor control on the main form. To allow the dialog
box to manipulate the RichTextBox control on the main form, the program declared a public shared
variable with the following statement:
Public Shared RTFBox As RichTextBox
This variable is initialized to the Editor RichTextBox control in the form’s Load event handler,
shown in Listing 7.16.
Listing 7.16: The Main Form’s Load Event Handler
Private Sub EditorForm_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
RTFBox = Editor
End Sub
The Find method of the RichTextBox control allows you to perform case-sensitive or -insensitive
searches, as well as search for whole words only. These options are specified through an argument of
the RichTextBoxFinds type. The SetSearchMode() function (Listing 7.17) examines the settings of the
two check boxes at the bottom of the form and sets this option.
Figure 7.14
The Search &
Replace dialog box
of the RTFPad
application
Chapter 7 MORE WINDOWS CONTROLS
324
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
VB.NET PDF Converter Library SDK to convert PDF to other file
a VB.NET solution, which users may quickly render and convert TIFF image file to PDF document. Please click to see demo code for this kind of PDF conversion.
how to convert pdf to tiff file; bulk pdf to tiff converter
Listing 7.17: Setting the Search Options
Function SetSearchMode() As RichTextBoxFinds
Dim mode As RichTextBoxFinds
If chkCase.Checked = True Then
mode = RichTextBoxFinds.MatchCase
Else
mode = RichTextBoxFinds.None
End If
If chkWord.Checked = True Then
mode = mode Or RichTextBoxFinds.WholeWord
Else
mode = mode Or RichTextBoxFinds.None
End If
SetSearchMode = mode
End Function
The Find and Find Next methods call this function to retrieve the constant that determines the
type of the search specified by the user on the form. This value is then passed to the Find method.
Listing 7.18 shows the code behind the Find and Find Next buttons.
Listing 7.18: The Find and Find Next Commands
Private Sub bttnFind_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles bttnFind.Click
Dim wordAt As Integer
Dim srchMode As RichTextBoxFinds
srchMode = SetSearchMode()
wordAt = EditorForm.RTFBox.Find(txtSearchWord.Text, 0, srchMode)
If wordAt = -1 Then
MsgBox(“Can’t find word”)
Exit Sub
End If
EditorForm.RTFBox.Select(wordAt, txtSearchWord.Text.Length)
bttnFindNext.Enabled = True
bttnReplace.Enabled = True
bttnReplaceAll.Enabled = True
EditorForm.RTFBox.ScrollToCaret()
End Sub
Private Sub bttnFindNext_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles bttnFindNext.Click
Dim selStart As Integer
Dim srchMode As CompareMethod
srchMode = SetSearchMode()
selStart = InStr(EditorForm.RTFBox.SelectionStart + 2, _
EditorForm.RTFBox.Text, txtSearchWord.Text, srchMode)
325
THE RICHTEXTBOX CONTROL
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
If selStart = 0 Then
MsgBox(“No more matches”)
Exit Sub
End If
EditorForm.RTFBox.Select(selStart - 1, txtSearchWord.Text.Length)
EditorForm.RTFBox.ScrollToCaret()
End Sub
Notice that both event handlers call the ScrollToCaret method to force the selected text to
become visible—should the Find method locate the desired string outside the visible segment of 
the text.
Summary
This chapter concludes the presentation of the Windowscontrols you’ll be using in building typical
applications. There are a few more controls on the Toolbox that will be discussed in later chapters,
and these are the rather advanced controls, like the TreeView and ListView controls. In addition,
there are some rather trivial controls, which aren’t used as commonly as the basic controls. The triv-
ial controls will not be discussed in this book. Instead, we’re going to move to some really exciting
topics, like how to build custom classes and custom Windowscontrols.
Classes are at the core of VB.NET and extremely powerful. For the first time, VB classes support
inheritance, which means you can extend existing classes, or existing Windowscontrols. You’ll learn
how to build your own classes and inherit existing ones in the following chapter. Then, you’ll learn
about building custom controls. Like classes, controls can also be inherited, and you’ll see how easy
it is to extend the functionality of existing controls by adding new members.
Chapter 7 MORE WINDOWS CONTROLS
326
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Part 
II
Rolling Your
OwnObjects
In this section:
 Chapter 8: Building Custom Classes
 Chapter 9: Building Custom WindowsControls
 Chapter 10: Automating Microsoft Office Applications
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Chapter 8
Building Custom Classes
Classes are at the 
very heart of Visual Studio. Just about everything you do with VB.NET
is a class, and you already know how to use classes. The .NET Framework itself is an enormous
compendium of classes, and you can import any of them into your applications. You simply
declare a variable of the specific class type, initialize it, and then use it in your code. As you have
noticed, even a Form is a Class, and it includes the controls on the form and the code behind them.
All the applications you’ve written so far are enclosed in a set of 
Class…End Class
statements.
When you create a variable of any type, you’re creating an instance of a class. The variable 
lets you access the functionality of the class through its properties and methods. Even the base
data types are implemented as classes (the 
System.Integer
class, 
System.Double
, and so on). An
integer value, like 3, is actually an instance of the 
System.Integer
class, and you can call the
properties and methods of this class using its instance. Expressions like 
3.MinimumValue
and
#1/1/2000#.Today
are odd, but valid.
In this chapter, you’ll learn how to build your own classes, which you can use in your projects
or pass to other developers. Classes are used routinely in team development. If you’re working in
a corporate environment, where different programmers code different parts of an application, you
can’t afford to repeat work that someone else has done already. You should be able to get their
code and use it in your application as is. That’s easier said than done, because you can guess what
will happen as soon as a small group of programmers start sharing code. They’ll end up with
dozens of different versions for each function, and every time they upgrade a function they will
most likely break the applications that were working with the old version. Or, each time they
revise a function, they must update all the projects using the old version of the function and test
them. It just doesn’t work.
The major driving force behind object-oriented programming is code reuse. Classes allow you to
write code that can be reused in multiple projects. You already know that classes don’t expose
their source code. In other words, you can’t see the code in a class, and therefore you can’t affect
any other projects that use the class. You also know that classes implement complicated operations
and make these operations available to programmers through properties and methods. The Array
class exposes a Sort method, which sorts its elements. This is not a simple operation, but fortunately
you don’t have to know anything about sorting. Someone else has done it for you and made this
functionality available to your applications. This is called encapsulation. Some functionality has
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Documents you may be interested
Documents you may be interested