Chapter 4 - Classic Controls
byMatthew MacDonald 
Apress 2002
Companion Web
Drag-and-drop operations aren't quite as common today as they were a few years ago, because programmers have gradually settled on other methods of copying information that don't require holding down the mouse button (a
technique that many users find difficult to master). For example, a drawing program is likely to use a two-step operation (select an object, and then draw it on) rather than a single drag-and-drop operation. Programs that do support
drag-and-drop often use it as a shortcut for advanced users, rather than a standard way of working.
Drag-and-drop is also sometimes confused with the ability to "drag" a picture or piece of user interface around a window. This "fake" drag-and-drop is useful in drawing and diagramming applications (including the drawing
application developed in 13), but it needs to be coded manually. In this section, you will learn about both types of dragging operations.
"Fake" Drag-and-Drop
True drag-and-drop is a user-initiated way to exchange information between two controls. You don't need to use drag-and-drop events to create objects that the user can move around the form (Figure 4-18
the following program that allows a user to click on a picture box, drag it around, and release it somewhere else on the form.
Figure 4-18: Dragging a control around 
Conceptually, a control is being dragged and dropped, but all the logic takes place in the appropriate mouse handling events. A Form level isDragging variable keeps track of when fake drag-and-drop mode is currently switched on.
// Keep track of when fake "drag and drop" mode is enabled.
private bool isDragging = false;
// Store the location where the user clicked the control.
private int clickOffsetX, clickOffsetY;
// Start dragging.
private void lblDragger_MouseDown(System.Object sender,
System.Windows.Forms.MouseEventArgs e)
isDragging = true;
clickOffsetX = e.X;
clickOffsetY = e.Y;
Adding pdf to powerpoint slide - C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
add pdf to powerpoint; how to convert pdf into powerpoint
Adding pdf to powerpoint slide - VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
how to change pdf to powerpoint on; how to convert pdf file to powerpoint presentation
VB.NET PowerPoint: Add Image to PowerPoint Document Slide/Page
insert or delete any certain PowerPoint slide without affecting on C#.NET PPT image adding library. powerful & profession imaging controls, PDF document, tiff
image from pdf to ppt; convert pdf to editable ppt
VB.NET PowerPoint: Edit PowerPoint Slide; Insert, Add or Delete
To view C# code for adding, inserting or To view more VB.NET PowerPoint slide processing functions powerful & profession imaging controls, PDF document, image
convert pdf to powerpoint online no email; how to convert pdf to ppt online
Chapter 4 - Classic Controls
byMatthew MacDonald 
Companion Web
The best possible way to prevent invalid input is to make it impossible for users to enter it. You accomplish this by forcing users to choose from lists, and creating custom controls that automatically format data and ignore invalid key presses. Of course, sometimes this task is too daunting and you need to settle on the next best thing, which is checking for errors after
the fact. If you take this approach, it's important that you report the error as soon as possible, preferably before the user continues to enter more information. The easiest way is to react to validation events.
Validation events were designed to let you check information as soon as it is entered, rather than waiting for the whole form to be submitted. This kind of instantaneous error checking is very useful:
Without it, users might be afraid to submit a form because they know there is a possible error.
Users might enter several pieces of invalid data at the same time. If you don't check the data until the form is submitted, your program then has to find some way to report about all the mistakes at once.
By the time users submit a form, they might have already forgotten about the particular field they entered incorrectly.
Validation solves this information by checking the field as soon as the user is finished entering it and changes focus to another control (either to enter new information, like choosing a text box, or to perform an action, like clicking a button).
In the past, developers have tried to create "do-it-yourself" validation by responding to a control's LostFocus event. The problem with this event is that it occurs after the focus has already moved on. If you reset the focus because of invalid input, another control then receives its own LostFocus event. If both controls have invalid data, they may fight endlessly between
each other, trying to move the focus somewhere else.
.NET handles this problem with the Validating and Validated events. These events occur after the user has chosen to move to another control (for example, by pressing the Tab key), but before the focus has been changed, in the following order:
The Validated event allows you to respond to correctly entered data. The Validating event is more useful. It allows you to verify the data and, if it fails the test, stop the focus from moving to the new control.
Validation only takes place if the source control (the control to be validated) has the CausesValidaton property set to true. In addition, the validation won't take place until the focus changes to a control that also has its CausesValidation property set to true. Table 4-15
Table 4-15: .NET Validation 
Source Control
CausesValidation is false
CausesValidation is true
CausesValidation is true
A Validation Example
The program shown in Figure 4-20
uses validation to verify that neither text box is left blank. If the user tries to change focus without entering any information, a message box appears, and the focus is reset to the empty text box.
VB.NET PowerPoint: VB Code to Draw and Create Annotation on PPT
PDF, TIFF, MS Word and Excel). Most of end users would like to install and use Microsoft PowerPoint software and create PPT slide annotation through adding a
how to convert pdf to powerpoint; converting pdf to ppt online
C# PowerPoint - How to Process PowerPoint
Use the provided easy to call and write APIs programmed in C# class to develop user-defined PowerPoint slide adding and inserting projects.
conversion of pdf into ppt; pdf to powerpoint slide
VB.NET PowerPoint: VB Codes to Create Linear and 2D Barcodes on
PowerPoint PDF 417 barcode library is a mature and This PowerPoint ISSN barcode adding control is compatible ITF-14 barcode on any PowerPoint document slide
pdf to ppt converter online for large; convert pdf to powerpoint with
VB.NET PowerPoint: Read, Edit and Process PPTX File
SDK into VB.NET class application by adding several compact well, like reading Excel in VB.NET, Reading PDF in VB Independent from Microsoft PowerPoint Product.
pdf conversion to powerpoint; how to change pdf to powerpoint slides
Chapter 4 - Classic Controls
byMatthew MacDonald 
Apress 2002
Companion Web
The Last Word
This chapter has toured through the most common Windows controls, and demonstrated a few .NET twists like owner-drawn menus and the ErrorProvider control. You've also learned about the basic types of controls, the
techniques you can use for drag-and-drop support, and the best ways to integrate validation code into your forms. The next chapter continues with the last core topic for Windows user interface programming: Forms.
C# PowerPoint: C# Guide to Add, Insert and Delete PPT Slide(s)
offer this C#.NET PowerPoint slide adding, inserting and guide for each PowerPoint slide processing operation & profession imaging controls, PDF document, tiff
convert pdf to powerpoint presentation; convert pdf file to powerpoint
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
easily VB.NET PPT image adding and inserting clip art or screenshot to PowerPoint document slide at powerful & profession imaging controls, PDF document, image
converting pdf to powerpoint slides; pdf picture to powerpoint
Chapter 5 - Forms
byMatthew MacDonald 
Apress 2002
Companion Web
Chapter 5: Forms
Windows are the basic ingredients in any desktop application-so basic that the operating system itself is named after them. However, there's a fair deal of subtlety in exactly how you use a window, not to mention how you resize its content. This subtlety is what makes windows (or forms, to use .NET terminology) one of the most intriguing user interface topics.
This chapter explores how forms interact and take ownership of one another, and how forms are used to manage events. It also examines the basic classes involved, and considers the far from trivial problem of resizable windows. You learn how to design split-window interfaces, use the dazzling Windows XP control styles, and create irregularly shaped windows that
will amaze your programming colleagues. Finally, the end of this chapter considers the advantages and limitations of visual inheritance, which offers an elegant way to create form templates.
The Form Class
The Form class is a special type of control that represents a complete window. It almost always contains other controls. The Form class does not derive directly from Control; instead, it acquires additional functionality through two extra layers, as shown in Figure 5-1
Figure 5-1: The Form class lineage 
The Form class provides a number of basic properties that determine appearance and window style. Many of these properties (listed in Table 5-1
Table 5-1: Basic Style Properties 
VB.NET PowerPoint: Extract & Collect PPT Slide(s) Using VB Sample
functions, like VB.NET PPT slide adding/removing, PPT read this VB.NET PowerPoint slide processing tutorial & profession imaging controls, PDF document, image
convert pdf file into ppt; pdf to ppt converter online
VB.NET PowerPoint: PPTX to SVG Conversion; Render PPT to Vector
into VB.NET project by adding project reference PowerPoint files that end with .pptx file suffix can powerful & profession imaging controls, PDF document, tiff
how to convert pdf to ppt using; how to add pdf to powerpoint presentation
Chapter 5 - Forms
byMatthew MacDonald 
Apress 2002
Companion Web
Resizable Forms
Every week, Windows developers from every programming language spend countless hours trying to solve the problem of resizable windows. Some purchase third-party ActiveX controls designed to transform static forms into
resizable wonders automatically. These components are easy to use, but generally provide mediocre results that aren't suitable for professional applications. Other developers ignore the problem, and stubbornly lock interfaces into
fixed-size dialog boxes, making them seem unmistakably primitive. Most developers eventually give in, and write lengthy code routines to resize their forms by hand.
In .NET the picture has finally improved. Two new features-anchoring and docking-provide built-in support for resizable forms. These features allow you to configure a few properties, and end up with intelligent controls that adjust
themselves automatically. The catch? It's extremely easy to create the equivalent of the mediocre ActiveX resizing control. In other words, you can end up with a window that resizes its controls in an embarrassingly unprofessional
way with far less effort than was needed before.
Matching a good resizing approach with a sophisticated interface is possible, but it requires a little more subtlety and a few tricks. This chapter describes these tricks, such as adding container controls and using the DockPadding
property. Along the way, you learn how to create scrollable windows and controls, and see a full-fledged Explorer-style application that uses automatic resizing the right way.
The Problem of Size
The resizable forms dilemma stems from the fact that the Windows operating system supports a variety of monitors at several different resolutions. A window that looks decently sized on one computer may shrink to a toy-like box
on another, or even stretch beyond the bounds of the desktop, obscuring important controls.
For many simple applications, these types of problems are not serious because programmers usually design their applications for a set minimum standard resolution (such as 640 × 480 or, more commonly today, 800 × 600). It's
also generally accepted that users with much larger viewable areas expect to run several programs at once, and purchased larger screens so that they can put different programs side-by-side. They don't expect to use up the extra
viewable area with larger fonts or extra white space in a dialog box.
However, a document-based application can't afford to ignore these considerations. Users with more available space expect to be able to use it to see more information at a time. Programs that ignore this consideration (see for
example Figure 5-11
) are irredeemably frustrating.
Figure 5-11: A frustrating window 
Generally, a form needs to be resizable as soon as it stores more content than it can show at once. For
example, a configuration window with a few settings does not need to be resizable, because all the
information is available. On the other hand, a window that shows a scrolled text view or a data grid can
benefit from more space, and so should be resizable.
Ever since the dawn of Windows 95 and 32-bit programming, developers have found it increasingly difficult to avoid writing manual code to resize windows (in the older days of Windows programming, they just didn't bother at all).
The emphasis on MDI interfaces has also contributed to this change. In an MDI (Multiple Document Interface) application, users expect to be able to resize, maximize, minimize, tile, and otherwise arrange all the child windows.
One common solution is to write procedures that dynamically resize the window, by responding to a resize event or message. Unfortunately, if your window has more than a couple of controls, this code becomes long, repetitive,
and ugly. It's also hard to alter or debug when the form changes even slightly, and a nightmarish example of hard-coded values and cryptic lines of code. In .NET, the picture improves considerably.
Minimum and Maximum Size
Chapter 5 - Forms
byMatthew MacDonald 
Apress 2002
Companion Web
Splitting Windows
One of the most recognizable user interface styles in applications today is the split window look (arguably popularized by Windows Explorer). In fact, split-window view applications are beginning to replace the former dominant
paradigm of MDI, and Microsoft has led the change (although many developers, myself included, still favor MDI design for many large-scale applications).
In .NET, split-window designs are refreshingly easy to create, which is a dramatic departure from most other programming environments. To create a split window requires just three easy steps:
Start by docking a control to one side of the window.
Add the Splitter control, and dock it to the same side.
Add another control, and set its docking to Fill so it occupies the rest of the window.
The example in Figure 5-19
shows this technique with a TreeView and a ListView. By moving the position of the splitter bar at runtime, the user can change the relative size of these two controls.
Figure 5-19: A basic splitter bar 
In this case, the window is somewhat claustrophobic. To improve the spacing, you can set a buffer using the form's DockPadding property. However, this won't add any extra spacing between the controls and the splitter bar-to add
that, you need to anchor the ListView and TreeView in separate docked Panels, as you consider in the next example.
You can also set the SplitterBar.MinSize property to configure the smallest size (in pixels) to which the first docked control can be resized. You can also set the SplitterBar.MinExtra property to configure the minimum size for the
controls on the other side of the splitter.
Docking with Panels
Rather than docking specific controls, as in the preceding example, it's more common to dock two Panel controls, one on each side of the splitter bar. That way, you can include several controls together in the Panel, and fine-tune
their spacing. You can then use anchoring to cause the controls inside the Panel to resize themselves to fit its contents. This is where docking and container controls really begin to become useful.
Figure 5-20
shows an example taken from Chapter 9, which uses a customized TreeView/ListView explorer.
Figure 5-20: Advanced docking 
Documents you may be interested
Documents you may be interested