2012年10月28日 (日)

XMLスキーマ定義に従ってXMLファイルを読み込む(2)

タイトル通り、前回の「XMLスキーマ定義に従ってXMLファイルを読み込む(1)」の続きです。

» 続きを読む

2012年10月18日 (木)

XMLスキーマ定義に従ってXMLファイルを読み込む(1)

前回、プロジェクトに取り込む場合のXMLファイル構造についての注意点を書きました。今回はその注意点に従っているという前提に基いて、XMLファイルをスキーマによる妥当性チェックを行いながら、アプリケーションで読み込むロジックについての話です。

» 続きを読む

2012年10月14日 (日)

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

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

» 続きを読む

2012年9月17日 (月)

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

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

» 続きを読む

2011年9月24日 (土)

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

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

» 続きを読む

2011年9月23日 (金)

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

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

» 続きを読む

2011年3月27日 (日)

記事修正のお知らせ

システムイメージリストを使用したアイコン表示(2)」の記事は、kurimu さんから御指摘の内容を反映させる必要がありました。本日、サンプルソースも含め、その内容を記事に反映させました。

本記事を参考にプログラム作成を行なった方は、是非 kurimu さんのコメントだけでも読まれるようお願いします。


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年2月 4日 (金)

OLEドラッグ&ドロップ対応にする方法(オブジェクト編)

.NETにおけるOLEドラッグ&ドロップは、いろいろなデータを取り扱えますが、その制約について改めて確認しておきます。
Control.DoDragDrop メソッドで、『データは、基本マネージ クラス (String 、 Bitmap 、または Metafile)、あるいは ISerializable または IDataObject を実装するオブジェクトのいずれかである必要があります。』と説明されています。
つまり、これらのデータである限り、OLEドラッグ&ドロップが出来るという事です。

ではここで、前回ファイル編で使用したドロップソース側のサンプルを修正して、ListBox から ListView に置き換えてみます。ここでは、View プロパティを View.Details 、MultiSelect プロパティを false に設定している前提とします。そしてドラッグした、ListViewItem 自身をドラッグで受け渡すデータとしてみます。なお、ListViewItem は、ISerializable インターフェースを実装しているので、前述のデータ受け渡し制約の範囲内となります。

なお、今回も最後にサンプルコードがダウンロード出来るようにしています。詳細はそちらを見て頂きたいのですが、ListViewItem として、改造前同様任意のフォルダ内のファイル情報を表示しています。但し、今回の記事の関連で、若干ながら凝った造りにしています。
では、さっそく本題に入ります。

» 続きを読む

2011年1月28日 (金)

OLEドラッグ&ドロップ対応にする方法(ファイル編)

前回のテキスト編に続き、今回はファイルを対象としたドラッグ&ドロップを行なってみます。

ファイルのドロップターゲットになるアプリケーションは多いものの、ドロップソースとしての機能を持つものは、エクスプローラ的なもの位しかない様な気もします。しかし、ここではあえて、TreeView や ListView は使いません。これらは、別枠で記事にしたいと思っていますので、ここでは ListBox を使用する事にします。

またファイルの場合、ドロップターゲットとしてだけ機能すればいいケースが多い筈なので、今回はドロップソースと、ドロップターゲットを別プロジェクトにしてみました。

» 続きを読む

«OLEドラッグ&ドロップ対応にする(テキスト編)