Top > .NET

C# Edit

ArrayListを配列に変換する Edit

ArrayList tmp = new ArrayList();
Hoge[] hoges = (Hoge[])tmp.ToArray(typeof(Hoge));

ArrayListをList<Hoge>に変換する Edit

// ArrayListをList<tb_employee>に変換する
ArrayList tmp = new ArrayList();
List<Hoge> employees = new List<Hoge>((Hoge[])tmp.ToArray(typeof(Hoge)));

コントロール関連 Edit

.NET/コントロール/画像をボタンにする

サンプル集 Edit

.NET/スクリプトを使う(実行時にソースファイルをコンパイルして実行する)
.NET/デバッグ用にオブジェクトをダンプするクラス
.NET/COMでExcelを操作する

String.Formatの書式例 Edit

ゼロパディング Edit

?String.Format("{0:000}", 23)
"023"
?String.Format("{0:000}", 2)
"002"

数字を3桁区切り Edit

String.Format("{0:#,0}", 123456789);

小数点以下2桁まで Edit

?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")

エンターキーでフォーカス移動 Edit

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の中で処理
されてしまっているためで、これらのクラスを継承してオーバーライドしてやればよい。

イベントの発生する順番 Edit

イベントの発生する順番を調べるにはこのツールが必須だ。
ManagedSpy++
http://msdn.microsoft.com/ja-jp/magazine/cc163617(en-us).aspx

フォーカス移動時 Edit

キーボード (Tab、Shift + Tab など) を使用するか、Select メソッドまたは SelectNextControl メソッドを呼び出すか、ContainerControl.ActiveControl プロパティを現在のフォームに設定してフォーカスを変更するとき、次の順序でフォーカス イベントが発生します。
Enter
GotFocus
Leave
Validating
Validated
LostFocus

マウスを使用するか Focus メソッドを呼び出してフォーカスを変更するとき、フォーカス イベントは次の順序で発生します。
Enter
GotFocus
LostFocus
Leave
Validating
Validated

MSDNによると、一般的に、GotFocus イベントおよび LostFocus イベントは、UICues を更新するとき、またはカスタム コントロールを作成するときにだけ使用されます。

キー押下 Edit

キー イベントは次の順序で発生します。
KeyDown
KeyPress
KeyUp
KeyPress イベントは、文字以外のキーによっては発生しませんが、文字以外のキーは KeyDown イベントと KeyUp イベントを発生させます。

overrideしたOnXXXとフォームで追加したイベントハンドラ Edit

            Debug.WriteLine("\n");
            Debug.WriteLine("OnEnter");
            base.OnEnter(e); // ←フォームで追加したイベントハンドラが呼ばれる
            Debug.WriteLine("OnEnter2");

TreeViewのノード選択時 Edit

MouseDown
MouseUp
BeforeSelect
AfterSelect

FocusとSelectの違い Edit

MSDNによると、SelectはSelectableなコントロールだけを対象にし、Focusはカスタムコントロールを作るときなどに利用する、とある。
これを見ると通常はFocusでなくSelectの方がよさそうだ。
しかし実験プログラムを作って調べてみたところ、違いは見つからなかったらしい↓。
http://visualbasic.about.com/od/usingvbnet/a/canfocus01.htm

CodeProjectの記事 Edit

任意の形のウィンドウをつくる
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のバージョンを調べる Edit

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



URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes