Les Smith| Ask a Question, or give your feedback on my articles or products by clicking on My Blog. |  |
Les Smith is an Independent Software Developer, currently contracting at a major medical data processing company. Prior to assuming this position, he was an Director of Software Development at the same company.
Les has worked in all versions of Visual Basic since the debut of VB3. He is currently doing deveopment in C#, ASP.NET, and heavily involved in .NET Remoting and ASP Web Services.
His experience ranges from developing operating systems for mainframes to developing applications and developer tools. He has worked for several mainframe manufacturers and has made technical presentations to top information technology management in many of the largest corporations in America. He has had project lead responsibilities in numerous commercial and goverment entities, including several NASA installations.
Les is the author of Writing Add-ins for Visual Studio .NET, published by Apress. The book is available at Amazon.com.
He is also president of HHI Software, and he is the developer of such products as VBCommander and VBXRef200, NetCommander, NET Refactor, CSharpCompleter, and Print Object Factory. He will soon be releasing Net Sessions, which is an add-in that maintains and tracks Session Variables in ASP.NET applications. He is one of the partners at KnowDotNet.
Need Help?Got a quick Question, or if you need an Add-In or other application developed, Les is available for short term development contracts or consultation over the Internet. Les can be reached at les@knowdotnet.com.
Articles by Les Smith
Using Predicate Delegates and Lambda Expressions in C# - 5/4/2010
Parsing XML With ADO.NET DataSet ReadXML - 4/24/2010
Use Application Wrapper Class To Access Web.Config Values - 4/16/2010
Use ViewState Properties Instead of Referencing ViewState Directly - 4/16/2010
Use HTTPRequest To Create a Web Browser Business Object - 4/16/2010
Log Browser Info For Trouble Shooting Web Application Errors - 4/16/2010
Pass delegate as Anonymous Method in C# To Sort List of Objects - 3/13/2010
Using a Scrollable Div To Show Multiline Data in ASP.NET - 3/12/2010
Creating and Parsing Excel Compatible CSV Files - 2/10/2010
Highlighting Search Text Results in ASP.NET Search Page - 2/4/2010
Using ASP.NET Data Caching in a DLL (Outside of Page/CodeBehind) - 2/4/2010
Fill TextBoxes with Java Script on DropDownList SelectedIndexChange - 2/3/2010
Finding State FullName in DropDownList with Abbreviation - 1/30/2010
Setting the Default Button in an ASP.NET Page with Multiple Submit Buttons - 1/30/2010
Use object.Find Method Instead of Looping Through Lis<T> - 1/12/2010
How To Use a LIKE in a Stored Procedure - 1/11/2010
Disable or Change the Way Windows Updates Are Performed - 8/20/2009
Writing Plug-Ins for Loose Coupling of Application Components - 4/27/2009
Use Activator.CreateInstance to Create Objects from a String Name - 4/23/2009
Generate Classes From a Document - 4/23/2009
How To Move a Window on the Scrren When It is Off The Screen - 4/12/2009
Design Patterns - Facade Pattern - 2/20/2009
Design Patterns - The Strategy Pattern - 2/20/2009
C# and VB.NET Gotcha - Select Case Using Nothing Does Not Raise Exception - 1/15/2009
Get Data From DataGridView SelectedRows - 12/31/2008
Retrieve My.Settings From Loosely Coupled DLL in C# and VB.NET - 9/26/2008
Compute Excel Column Number from Integer Column Number - 9/11/2008
Use Namespace Alias To Get Intellisense on Consts in DLL - 9/11/2008
VS2008 - Using LINQ to Query From an Array (C#) - 2/27/2008
VS2008 - Using LINQ to Query From an Array - 2/27/2008
GenerateDefaultValueInCode in VS2005 and VS2008 - 2/7/2008
What's New In VS2008? - 1/27/2008
Using String.Split Intelligently Instead of RegularExpressions - 1/25/2008
Keep up with Usernames and Passwords - 1/22/2008
Using the ClipBoard in a Macro - 1/21/2008
ListView Drag & Drop With Auto Scrolling in .NET (Upgraded) - 1/21/2008
Load VS2005 Add-in In VS2008 - 12/18/2007
Easy Way to Indent XML in a TextBox - 12/15/2007
Passing A Delegate As a Parameter - VB.NET and C# - 12/13/2007
Flickering While Resizing - 12/11/2007
Convert Stored Proc to Dynamic SQL - 10/31/2007
Replacing VB.NET Functionality in C# - 10/8/2007
GridLayout in VS2005 - Where is It? - 9/11/2007
Design Patterns - Singleton Pattern - 8/13/2007
Deploying VS2005 Add-In (#2) - 7/10/2007
Detect Compiler Errors in Application From an Add-In - 6/12/2007
Generate Large Blocks of Code With Macros - 5/30/2007
Accessing Values From Tools Options Window With An Add-in - 5/6/2007
Error Installing VS2005 Add-In With Vista - 4/3/2007
VB6 To VB.NET Gotchas - 3/6/2007
Determining If Icon Was Clicked in ListView - 1/27/2007
Writing Bug-Free, Maintainable Code - 1/1/2007
New Features in VS2005 and .NET In General - 12/29/2006
Convert VB6 to VB.NET - 12/26/2006
Macros Will Save You Time - 12/15/2006
Extending the CodeModel - 12/6/2006
Inheritance and Implements Keywords - 12/3/2006
Inheritance and Implements Keywords - 12/3/2006
AppConfig in VS2005 - 11/15/2006
Patterns and Best Practices - 11/13/2006
Complex File Masking for FTP Component - 10/16/2006
Hot Hot Keys (Short Cut) in VS2005 - 9/29/2006
Print Contents of Grid or ListView - 9/16/2006
Must Implement IConvertible With Microsoft Data Application Block - 8/22/2006
Additional information: '<', hexadecimal value 0x3C, is an invalid attribute character 7/22/2006
Using GetFiles With Three Character Extension Returns Extraneous Files - 6/3/2006
Sort ArrayList Of Objects - 5/23/2006
Find Duplicate Records in SQL - 5/16/2006
File Comparison with ExamDiff - 4/24/2006
Visual Studio .NET Tips and Tricks - 4/14/2006
Dynamically Change URL to Web Service - 4/12/2006
Getting The Age of an Person in SQL Server Query Using UDF - 4/8/2006
Finding Start and End Dates of Previous Week - 4/7/2006
Search Stored Procedures with SQL in SQL Server - 3/27/2006
Converting Access SQL to Oracle - 3/27/2006
Search Stored Procedures with SQL in SQL Server - 3/27/2006
Getdate() In SQL Server - 3/23/2006
Regex for Comma Delimited Text - 3/17/2006
Use FileStream and StreamWriter to Write One File A Day - 3/1/2006
What are Generics in C#? - 2/27/2006
Multiple Duplicate Keys in App.Config Files - 2/14/2006
Integers Displayed as Hex in Visual Studio .NET - 2/3/2006
Deploying VS2005 Add-In - 1/27/2006
VS2005 - Windows Application With No Form - 1/26/2006
Converting to VS2005 - 102 Late Binding Warnings - 1/25/2006
Get XML Comments Ready for VS2005 - 1/6/2006
Watching Keystrokes in an Add-in in VS2005 - 12/19/2005
How to Add Nested Menus To an Add-In in VS2005 - 12/19/2005
VS2005 Forms and Partial Classes - 12/17/2005
Wrapping the XML Dom and XML Text Writer - 12/4/2005
VS2005 (Whidbey) Restores VB6 Command Window Functionality Almost - 11/12/2005
Setup Has Detected That Another Program Requires the Computer to Reboot - 11/12/2005
Sharing Enums, Class Definitions Across Assembly Boundries - 7/29/2005
Creating a VB.NET or VB6 Type Collection in C# Using a HashTable - 7/13/2005
Stored Procedures, Enums, Microsoft Data Access Application Block - 6/17/2005
Refactoring - Extract SuperClass - 6/12/2005
Convert VB.NET to C# using Macros and Regular Expressions - 5/20/2005
Use Threads to Keep UI Responsive and Events to Show Status - 4/15/2005
Handling Nested ProjectItems in an Addin ( Happens in ASP.NET Projects and When Project Items are in Folders) - 4/6/2005
Finally, VB will have a Continue Statement - 4/6/2005
Create A VB InputBox in C# - 3/27/2005
Invalid CurrentPageIndex value. It must be >= 0 and < the PageCount2/17/2005
Updater Application Block - Allow the User to Choose Install Folder for a Self-Updating App - 2/15/2005
Updater Application Block - Writing a PostProcessor - 2/9/2005
XML Document Wrapper Class - 2/8/2005
Updater Application Block - Writing a Wrapper DLL - 1/30/2005
Microsoft Updater Application Block - Setup Files and Directories - 1/30/2005
Sorting ASP.NET DataGrid - 1/18/2005
Auto Refresh of ASP.NET Page - 1/12/2005
Minimize Code Changes When Changing URL of WebService - 1/7/2005
Microsoft Application Blocks - Application Updater, Using the Manifest Utility - 12/27/2004
Microsoft Application Blocks - Application Updater - 12/27/2004
Placing Hard Returns in a Windows Forms Label - 12/21/2004
Controls created on one thread cannot be parented to a control on a different thread - 12/20/2004
Learn to Get By Without Microsoft.VisualBasic Namespace - 12/12/2004
Use a Delegate for CallBack In Place of RaiseEvents - 11/19/2004
Changing the Submit Button in ASP.NET Web Form - 11/17/2004
Use a DataView to Print the Contents of a Sorted Grid - 10/26/2004
Creating a Desktop Shortcut in .NET Code - 10/22/2004
Use Convert Class Instead of Casting or CType - 9/27/2004
Use ADO.NET Transactions to Perserve Data Integrity - 9/8/2004
Refactor Methodology - Stub New Method - 8/31/2004
Reusability - Visual PolyMorphism, Taking a Different Look - 8/24/2004
Don't Load WinForms If No Processing Can Be Done - 8/23/2004
ADO.NET SQL Shortcut - If Exists - 8/13/2004
Refactoring - Extract Method From Event Handler Code - 7/8/2004
Refactoring Multiple Instances of Duplicate Strings - 6/16/2004
Convert Dynamic SQL to Use SQLCommand Parameters Automatically - 6/12/2004
Extract Method Refactoring - 6/6/2004
Book Review - Microsoft Visual Basic .NET Programmer's Cookbook - 5/27/2004
Do VB.NET Developers Know About Refactoring? In C# it's the Rage! - 5/19/2004
SelectedIndexChange Event Fires Twice in ListView - 5/19/2004
It's Always Time to Refactor- Part III - 5/16/2004
It's Always Time to Refactor- Part II - 5/16/2004
It's Always Time to Refactor - 5/16/2004
NETCommander - Visual Studio .NET IDE Enhancer (VB.NET & C#) - 5/15/2004
Printing a Windows Form - 5/10/2004
Rebuilding a RESX File - 5/7/2004
Enumerating the Items in the TaskList from a Visual Studio .NET Add-in - 5/4/2004
Writing to the Output Window From a Visual Studio .NET Add-in - 5/4/2004
Add items to the .NET Clipboard Ring from an Add-in - 5/3/2004
Collapsing and UnCollapsing All Regions in an Add-in - 4/22/2004
Use ListViewItem to Load ListView With Sorting Turned On - 4/12/2004
Collapse a Region Programatically in an Add-In. - 4/9/2004
Performance Issues in ADO.NET DataTable Usage. - 4/6/2004
Protect Events That Fire During InitializeComponent - 4/2/2004
Microsoft did a Great Job with the String Object - 3/25/2004
Compacting an Access Database While Using ADO.NET - 3/22/2004
Use Constructor in Windows Forms to Ensure Proper Initialization - 3/15/2004
Use Custom Properties in Forms to Standardize & Speed up RAD - 3/15/2004
Use Visual Inheritance to Standardize and Speed RAD - 3/15/2004
Multiple Column Formats in Windows Forms DataGrid - 3/12/2004
Using Standard Naming Conventions in Visual Studio NET - 3/11/2004
.NET Gotcha - VB6 Compatible Replace Function - 3/10/2004
.NET Printing is different, but much more powerful and flexible. - 3/9/2004
.NET Printing is Different, but much more Powerful and Flexible than in VB6 - 3/1/2004
Using the System.IO Namespace - The Path Class - 2/24/2004
Using the System.IO Namespace - The Directory Class - 2/24/2004
Make A Dockable Toolbar Like the Office Toolbar - 2/23/2004
Scrolling Forms and Windows are a Snap in .NET - 2/23/2004
Use EditPoint Object to Get All Code From Code Window - 2/21/2004
.NET Class Organizer - 2/14/2004
Reordering Items in a ListView in Response to Up or Down Button Click - 2/13/2004
Multi-Threadiing in an Add-in to Solve Timing Issues - 2/6/2004
Using Project Level Imports in VB.NET. - 1/26/2004
A Plug for C# From a VB Programmer - 1/25/2004
Structures Change From Value Types to Reference Types When Boxed - 1/25/2004
Compact Framework - Use XML Files to Replace The Registry - 1/24/2004
Use XML Files to Replace The Registry for GetSetting And SaveSetting VB Functions - 1/24/2004
Using Overloads and Shared Methods in .NET Classes - 1/22/2004
New to .NET - Why does my application quit when I exit Sub Main? - 1/21/2004
Using EditPoint to Select Code Without Disturbing the Selected Text - 1/20/2004
Combining Regular Expressions and RichTextBox Methods to Parse Code - 1/15/2004
Using ActiveSolutionProjects and ProjectItem.FileCodeModel to determine if a Window is a Designer or CodeWindow. - 1/14/2004
Using ADO.NET to Serialize and Deserialize ListBox and ListView Controls to XML Files - 1/14/2004
Building Automatic UnInstall in .NET Deployment MSI Package - 1/14/2004
Parsing with Regular Expressions - Counting Leading Spaces in a String - 1/9/2004
Parsing with Regular Expressions - All-Alpha-Character String - 1/9/2004
Parsing with Regular Expressions - IsDigit - 1/9/2004
Using Regular Expressions to Create Parsing Methods - 1/9/2004
Using Regular Expressions - Replacing VB6 Replace - 1/9/2004
Parsing with Regular Expressions - CountOccurrences in a String - 1/9/2004
Using the CodeModel and FileCodeModel - 1/8/2004
Smart TextBoxes - 1/7/2004
Using the FileSystemWatcher in a Windows Service - 1/6/2004
Replacing the Line Control in VB6 - 12/31/2003
Assigning Shortcut Keys to a Macro - 12/31/2003
Add-ins - Enumerating Selected Controls - 12/30/2003
Migration - Creating Services in .NET - 12/29/2003
Why Migrate - .NET Eases The Task of Accessing the Registry - 12/26/2003
Why Migrate to .NET? Printing is different, but much more powerful and flexible than VB6. - 12/23/2003
Serializing a ListView to XML - 12/23/2003
Use the CodeModel to retrieve a procedure from a code window. - 12/21/2003
C# Add-In - Use the CodeModel to retrieve a procedure from a code window. - 12/21/2003
Selecting a Data Grid Row with Right Mouse Click - 12/17/2003
Setting Registry Entries for Add-in Deployment - 12/14/2003
Migrating an Add-in from VS 2001 to VS 2003 - 12/12/2003
Differences Between Access and Oracle SQL - 12/10/2003
Handling TreeView & ComboBox Click Events - 12/9/2003
Modeless Dialogs in an Add-in - 12/9/2003
ADO.NET Gotchas - 12/9/2003
Using the DatePicker in the Compact Framework - 12/8/2003
Empowering the CF ComboBox - 12/7/2003
Using the FileCodeModel to Get the Code for a Method - 12/5/2003
Closing All Saved Windows in the IDE - 12/5/2003
Selecting Text in a Window That is not Open in the IDE - 12/5/2003
Handling Multiple Languages in an Add-in - 12/5/2003
Passing DataTables by Reference - 11/28/2003
Printing Line Number with an exception in Release Mode - 11/12/2003
Removing a Solution from Sourcesafe - 11/12/2003
ProjectItemsEvents - 11/3/2003
Retrieving Comments from the Top of a Class in an Add-In. - 10/30/2003
Add-ins: Retrieving Code From a Window and Putting It Back - 10/30/2003
Reload Component - 10/30/2003
Creating a Colored Brush in GDI+. - 10/30/2003
VB6 Functionality Missing from VB.NET (PrevInstance) - 10/30/2003
Handling Null values - 10/30/2003
Context Menus in a Visual Studio .NET Add-in - 10/30/2003
Close All Windows but the Current Window in the Visual Studio .NET IDE - 10/30/2003
Formatting DataGrid Columns with the CGrid Class - 10/30/2003
Reusability of Data Access Code in ADO.NET Applications - 10/30/2003
Auto Saving Project Items - 10/30/2003
Add-in: Adding a Method to the End of a Document - 10/30/2003
View One Procedure - 10/30/2003
|