Sometimes it can be challenging to read the Details view in a ListView, especially if the rows are long. This article shows how to add shading to every second row to make a ListView easier to read.
Sadly there is no built-in function in System.IO that will copy a folder and its contents. Following is a simple recursive algorithm that copies a folder, its sub-folders and files, creating the destination folder if needed. For simplicity, there is no error handling; an exception will throw if anything goes wrong, such as null or invalid paths or if the destination files already exist.
For some operations such as logging on to a web site or downloading a web page, you may not know how long it will take the operation to finish. So instead of showing a progress bar with a specified percent complete, you can set the .NET ProgressBar to cycle continuously.
Here is the easiest way to read an entire text file into a C# string:
string s = System.IO.File.ReadAllText( path );
One of the many changes in the upgrade to Visual Studio 2008 is how Ctrl+Tab switches between open documents in the IDE. Ctrl+Tab used to show the previously viewed document. But in VS 2008, the IDE Navigator window appears as shown below, and you must press Enter to show the previous document. An additional Enter key doesn’t sound like a big inconvenience, but if you do this hundreds of times each day like most developers, you will quickly find the extra step irritating. This article describes how to disable the Ctrl+Tab navigator window in Visual Studio 2008.
Be careful when returning C# arrays that are private members of an object, as it essentially makes the array contents public, since the client can easily change the array.
This article provides C# code for an empty enumerator. This generic class can be used to simulate enumeration over an empty collection of any type of objects. Here is the code:
When two overloads of a method in a generic class are the same (have identical type arguments) as a result of the generic type you specified, which method is called?
Given two generic classes:
public class Type1<T> {} public class Type2<T> {}
.NET allows you to specify a generic type as the type of another generic type:
Type1<Type2<int>> obj = new Type1<Type2<int>>();
It’s possible to provide multiple generic enumerators for a single class. The trick is that clients must specify which enumerator to use.