C# 
ArrayListを配列に変換する 
ArrayList tmp = new ArrayList();
Hoge[] hoges = (Hoge[])tmp.ToArray(typeof(Hoge));
ArrayListをList<Hoge>に変換する 
// ArrayListをList<tb_employee>に変換する
ArrayList tmp = new ArrayList();
List<Hoge> employees = new List<Hoge>((Hoge[])tmp.ToArray(typeof(Hoge)));
コントロール関連 
.NET/コントロール/画像をボタンにする
サンプル集 
.NET/スクリプトを使う(実行時にソースファイルをコンパイルして実行する)
.NET/デバッグ用にオブジェクトをダンプするクラス
.NET/COMでExcelを操作する
String.Formatの書式例 
ゼロパディング 
?String.Format("{0:000}", 23)
"023"
?String.Format("{0:000}", 2)
"002"
数字を3桁区切り 
String.Format("{0:#,0}", 123456789);
小数点以下2桁まで 
?String.Format("{0:#.00}", 123)
"123.00"
?String.Format("{0:#.00}", 123.5351)
"123.54"
?String.Format("{0:#.00}", 123.5)
"123.50"
下記でもできる
123.ToString("0.00")
エンターキーでフォーカス移動 
KeyPreview = trueし、フォームのOnKeyDownで
if (e.KeyCode == Keys.Enter)
{
ProcessTabKey(e.Shift);
}
してやればよい。しかしそれだけではダメな場合がある。
1. AcceptButtonが設定されている場合
2. TextBoxがMultiLine=trueになっている場合
3. ボタンまたはLinkLabelがActiveControlである場合
1. はしょうがないのでAcceptButtonを設定しないようにする。
2. はKeyDownの中でActiveControlを判定してやる。
3. はキーイベントがButtonまたはLinkLabelのProcessDialogKeyの中で処理
されてしまっているためで、これらのクラスを継承してオーバーライドしてやればよい。
イベントの発生する順番 
イベントの発生する順番を調べるにはこのツールが必須だ。
ManagedSpy++
http://msdn.microsoft.com/ja-jp/magazine/cc163617(en-us).aspx
フォーカス移動時 
キーボード (Tab、Shift + Tab など) を使用するか、Select メソッドまたは SelectNextControl メソッドを呼び出すか、ContainerControl.ActiveControl プロパティを現在のフォームに設定してフォーカスを変更するとき、次の順序でフォーカス イベントが発生します。
Enter
GotFocus
Leave
Validating
Validated
LostFocus
マウスを使用するか Focus メソッドを呼び出してフォーカスを変更するとき、フォーカス イベントは次の順序で発生します。
Enter
GotFocus
LostFocus
Leave
Validating
Validated
MSDNによると、一般的に、GotFocus イベントおよび LostFocus イベントは、UICues を更新するとき、またはカスタム コントロールを作成するときにだけ使用されます。
キー押下 
キー イベントは次の順序で発生します。
KeyDown
KeyPress
KeyUp
KeyPress イベントは、文字以外のキーによっては発生しませんが、文字以外のキーは KeyDown イベントと KeyUp イベントを発生させます。
overrideしたOnXXXとフォームで追加したイベントハンドラ 
Debug.WriteLine("\n");
Debug.WriteLine("OnEnter");
base.OnEnter(e); // ←フォームで追加したイベントハンドラが呼ばれる
Debug.WriteLine("OnEnter2");
TreeViewのノード選択時 
MouseDown
MouseUp
BeforeSelect
AfterSelect
FocusとSelectの違い 
MSDNによると、SelectはSelectableなコントロールだけを対象にし、Focusはカスタムコントロールを作るときなどに利用する、とある。
これを見ると通常はFocusでなくSelectの方がよさそうだ。
しかし実験プログラムを作って調べてみたところ、違いは見つからなかったらしい↓。
http://visualbasic.about.com/od/usingvbnet/a/canfocus01.htm
CodeProjectの記事 
任意の形のウィンドウをつくる
http://www.codeproject.com/KB/miscctrl/customcsforms.aspx
縦の棒グラフを簡単に表示するコントロール
http://www.codeproject.com/KB/miscctrl/HBarChart.aspx
グラフ描画ライブラリ
http://www.codeproject.com/KB/miscctrl/GraphPlotting.aspx
Automatic sorted list
http://www.codeproject.com/KB/miscctrl/sortablelist.aspx
画像が床に反射して見えるエフェクト
http://www.codeproject.com/KB/miscctrl/ReflectionPicture.aspx
アプリ内部にエクスプローラツリーを表示する方法
http://www.codeproject.com/KB/miscctrl/ExplorerTree.aspx
フォーム内部にWord2000を表示する
http://www.codeproject.com/KB/miscctrl/winwordcontrol.aspx
AutoResizeDataGrid
http://www.codeproject.com/KB/miscctrl/AutoResizeDataGrid.aspx
Simple Label Gradient
http://www.codeproject.com/KB/miscctrl/labelgradient.aspx
EXEやDLLが必要とする.NET Frameworkのバージョンを調べる 
DLLやEXE ファイルが .NET Framneworkを必要としているか?
また必要としてる.NET Frameworkのバージョンを調べる方法は。。
定番の dumpbin.exe を使えばよいようです。(当たり前か)
以下のように、/clrheader というパラメータと調べたいファイル名をつけるだけです。
例 : dumpbin.exe /clrheader Hoge.dll
標準出力の内容の中の"clr Header:"のセクション → "runtime version"が
.NET Framework のバージョンを(間接的に)表しています。
2.00 : .NET Framework 1.1
2.05 : .NET Framework 2.0
"clr Header:"のセクションが表示されなければ、.NET Framework を必要としていない
ということになります。
■DUMPBIN リファレンス /CLRHEADER - MSDN
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vclrfCOMHEADER.asp
■.NET Framework 2.0 は、COM+ 2.05 - .NET Framework - 社本@ワック Blog
http://www.ailight.jp/blog/sha256/archive/2005/08/07/9250.aspx