覚え書き

2012年10月14日 (日)

プロジェクトにXMLスキーマを取り込む場合の注意点

プロジェクトにXMLスキーマを取り込む場合、まずXMLファイル自体の構造に注意を払うべきです。

続きを読む "プロジェクトにXMLスキーマを取り込む場合の注意点" »

2012年9月17日 (月)

VS2008 XMLスキーマのプロジェクト取り込み

久々の更新です。今回はVS2003/2005は対象外の話です(VS2010は対象となるか未確認)。

続きを読む "VS2008 XMLスキーマのプロジェクト取り込み" »

2011年9月24日 (土)

DrawRectangle と Pen の設定による描画位置

DrawRectangle を使用した時、描画される位置をドット単位で意識しなくてはいけない事があったので、Pen の設定によりどの様に描画されるかを書き残しておきます。

続きを読む "DrawRectangle と Pen の設定による描画位置" »

2011年9月23日 (金)

タイトルバーのないフォームの移動

タイトルバーのないフォームの移動を行なう場合のプログラム記述については、既に他のサイトでも紹介されています。しかし、実際の使用においては補足する必要もあったので、あえて覚え書きとして残しておきます。

続きを読む "タイトルバーのないフォームの移動" »

2011年2月13日 (日)

TextBox のマウス位置に該当する行・桁位置を求める

短くて済むので、C# Tips というより、覚え書きとして、書き残しておきます。

C#2005 以降を前提としますが、任意のマウス位置から、テキストの文字インデックスを得るものとして、GetCharIndexFromPosition プロパティがあります。また、この文字インデックスにあたる行番号を取得出来る GetLineFromCharIndex プロパティと、指定行番号の先頭文字インデックスを得る GetFirstCharIndexFromLine プロパティを使用すれば、簡単な計算で桁位置も求められます。

具体的な使用例は、以下のとおりです。

private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
    int index = textBox1.GetCharIndexFromPosition(e.Location);
    int line = textBox1.GetLineFromCharIndex(index);
    int column = index - textBox1.GetFirstCharIndexFromLine(line);
    Console.WriteLine("{0}行 {1}桁", line, column);
}

ここでは、MouseDown イベントを使用したので、この様な記述となります。しかし、例えば DrapDrop イベントで使用する場合は、マウスの座標がスクリーン座標となっている為、クライアント座標に変換する必要がある事に注意します。

private void textBox1_DragDrop(object sender, DragEventArgs e)
{
    int index = textBox1.GetCharIndexFromPosition(
        textBox1.PointToClient(new Point(e.X, e.Y)));
    int line = textBox1.GetLineFromCharIndex(index);
    int column = index - textBox1.GetFirstCharIndexFromLine(line);
    Console.WriteLine("{0}行 {1}桁", line, column);
}

2011年1月13日 (木)

.NETでリソースにアクセスする

一応備忘録に書いておきます。

続きを読む ".NETでリソースにアクセスする" »

2011年1月10日 (月)

バージョン情報の設定

.NETのアセンブリに対するバージョン情報を埋め込むには@ITの.NET TIPS アセンブリにバージョン情報を設定するには?でも紹介されていますが、当方で調査した結果等を加えた内容で、ここにまとめておきます。

続きを読む "バージョン情報の設定" »

2010年12月30日 (木)

列挙体の値の列挙と、int->Enum 変換

前回、ちらっと汎用のFlags列挙体用プロパティエディタを作成中と発言しましたが、当然ながら汎用性を持たせる為、列挙体の型は動的に取得しなければなりませんし、最後エディタが設定した値も、動的に正しい型の列挙体にして返す必要があります。このあたり、どうやればうまくいくのか、ちょっと悩みましたので、備忘録として書き残しておきます。

続きを読む "列挙体の値の列挙と、int->Enum 変換" »

2010年11月 8日 (月)

処理時間の計測

簡単な事ですが、必要なときにすぐに見れる様に、覚え書きとして残しておきます。

DateTime startTime = DateTime.Now;
(計測したい処理)
TimeSpan tp = DateTime.Now.Subtract(startTime);
Console.WriteLine(tp.TotalSeconds);             // 処理時間を秒単位で表示

Console.WriteLine は、通常のフォーム付きアプリケーションでも、メニューの「表示」-「出力」で、表示されるウィンドウに出力されるので結構便利です。

(11/9 追記)
.NET Framework 2.0以降なら、Stopwatch クラスが使用出来るので、これを使用した場合も書いておきます。

System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
(計測したい処理)
sw.Stop();
Console.WriteLine(sw.Elapsed.TotalSeconds);

続きを読む "処理時間の計測" »

2010年11月 4日 (木)

「ファイルを開く」「名前を付けて保存」ダイアログのコントロールID

「フォルダの参照」ダイアログのコントロールID に続いて、「ファイルを開く」ダイアログのコントロールID も調査したので、覚え書きとして残しておきます。残念ながら、Windows 7 は未調査です。またVista は、日本語版を所有はしていますが、PCにインストールしていないので、VirtualPC用のVistaバーチャルディスクイメージをダウンロードして調べました。その為、英語版ですが、御勘弁を。

なおコントロールID は、WindowsAPI の GetDlgItem を使用すれば、そのコントロールのウィンドウハンドルが得られます。ウィンドウハンドルが得られれば、そのコントロールの各種制御や情報取得が出来ます。

※記事中は「ファイルを開く」ダイアログの図しかありませんが、「名前を付けて保存」ダイアログも全く同じコントロールIDである事を確認しています。
※灰色テキストのコントロールは、非表示状態にあるコントロールを示します。

続きを読む "「ファイルを開く」「名前を付けて保存」ダイアログのコントロールID" »

その他のカテゴリー