<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>WindowsForm</title><link>http://blogs.wankuma.com/koutarou/category/570.aspx</link><description>WindowsForm</description><managingEditor>koutarou</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>koutarou</dc:creator><title>検索コンパニオンでの半角スペースの謎</title><link>http://blogs.wankuma.com/koutarou/archive/2007/02/20/63204.aspx</link><pubDate>Tue, 20 Feb 2007 13:09:00 GMT</pubDate><guid>http://blogs.wankuma.com/koutarou/archive/2007/02/20/63204.aspx</guid><wfw:comment>http://blogs.wankuma.com/koutarou/comments/63204.aspx</wfw:comment><comments>http://blogs.wankuma.com/koutarou/archive/2007/02/20/63204.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.wankuma.com/koutarou/comments/commentRss/63204.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/koutarou/services/trackbacks/63204.aspx</trackback:ping><description>先週から、ファイル検索ツールを作っているんだけど。&lt;br&gt;
ファイル名をワイルドカード検索対応しよう！っと思ったので&lt;br&gt;
ワイルドカードぽい動きを正規表現（System.Text.RegularExpressions.Regex）で実装(C#)。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
実装したワイルドカードは、&lt;br&gt;
[*]:0文字以上の文字列&lt;br&gt;
[?]:1文字の文字列&lt;br&gt;
ってのが仕様です。&lt;br&gt;
&lt;br&gt;
ある程度出来たので、Windowsのエクスプローラの検索コンパニオンと比較テスト&lt;br&gt;
（検索コンパニオンの犬は、ローバー犬のロッキー君らしいです）&lt;br&gt;
&lt;br&gt;
そこで、わかった事が！&lt;br&gt;
ロッキー君は、検索キーワードに半角スペースを入れると、想定外の結果を返す。&lt;br&gt;
（私の思い込みの想定外ですが）&lt;br&gt;
&lt;br&gt;
***********以下　ロッキー君でのファイル検索テスト結果************&lt;br&gt;
&lt;br&gt;
&lt;検索対象フォルダに格納されているファイル一覧&gt;&lt;br&gt;
データダウンロード.xls&lt;br&gt;
データダウン[半角スペース]ロード.xls&lt;br&gt;
データダウン[半角スペース][半角スペース]ロード.xls&lt;br&gt;
データダウン[全角スペース]ロード.xls&lt;br&gt;
データダウン@ロード.xls&lt;br&gt;
データダウン@@ロード.xls&lt;br&gt;
データダウン＠ロード.xls&lt;br&gt;
関係ない.xls&lt;br&gt;
&lt;br&gt;
【検証1】&lt;br&gt;
検索文字：&lt;br&gt;
　　ダウンロード&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　ダウンロード.xls&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証2】&lt;br&gt;
検索文字：&lt;br&gt;
　　ダウン[半角スペース]ロード&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　データダウンロード.xls&lt;br&gt;
　　データダウン[半角スペース]ロード.xls&lt;br&gt;
　　データダウン[半角スペース][半角スペース]ロード.xls&lt;br&gt;
　　データダウン[全角スペース]ロード.xls&lt;br&gt;
　　データダウン@ロード.xls&lt;br&gt;
　　データダウン@@ロード.xls&lt;br&gt;
　　データダウン＠ロード.xls&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証2】&lt;br&gt;
検索文字：&lt;br&gt;
　　ダウン[半角スペース][半角スペース]ロード&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　データダウンロード.xls&lt;br&gt;
　　データダウン[半角スペース]ロード.xls&lt;br&gt;
　　データダウン[半角スペース][半角スペース]ロード.xls&lt;br&gt;
　　データダウン[全角スペース]ロード.xls&lt;br&gt;
　　データダウン@ロード.xls&lt;br&gt;
　　データダウン@@ロード.xls&lt;br&gt;
　　データダウン＠ロード.xls&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証3】&lt;br&gt;
検索文字：&lt;br&gt;
　　ダウン[全角スペース]ロード&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　データダウン[全角スペース]ロード.xls&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証4】&lt;br&gt;
検索文字：&lt;br&gt;
　　ダウン[半角スペース]@[半角スペース]ロード&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　データダウン@ロード.xls&lt;br&gt;
　　データダウン@@ロード.xls&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証5】&lt;br&gt;
検索文字：&lt;br&gt;
　　ダウン[半角スペース]@@[半角スペース]ロード&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　データダウン@@ロード.xls&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証6】&lt;br&gt;
検索文字：&lt;br&gt;
　　ダウン*ロード&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　なし&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証7】&lt;br&gt;
検索文字：&lt;br&gt;
　　*ダウン*ロード*&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　データダウンロード.xls&lt;br&gt;
　　データダウン[半角スペース]ロード.xls&lt;br&gt;
　　データダウン[半角スペース][半角スペース]ロード.xls&lt;br&gt;
　　データダウン[全角スペース]ロード.xls&lt;br&gt;
　　データダウン@ロード.xls&lt;br&gt;
　　データダウン@@ロード.xls&lt;br&gt;
　　データダウン＠ロード.xls&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証8】&lt;br&gt;
検索文字：&lt;br&gt;
　　*ダウン[半角スペース]ロード*&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　なし&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証9】&lt;br&gt;
検索文字：&lt;br&gt;
　　???ダウン?ロード????&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　データダウン[半角スペース]ロード.xls&lt;br&gt;
　　データダウン[全角スペース]ロード.xls&lt;br&gt;
　　データダウン@ロード.xls&lt;br&gt;
　　データダウン＠ロード.xls&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証10】&lt;br&gt;
検索文字：&lt;br&gt;
　　???ダウン[半角スペース]ロード????&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　なし&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【検証11】&lt;br&gt;
検索文字：&lt;br&gt;
　　[半角スペース]&lt;br&gt;
ヒットファイル：&lt;br&gt;
　　データダウンロード.xls&lt;br&gt;
　　データダウン[半角スペース]ロード.xls&lt;br&gt;
　　データダウン[半角スペース][半角スペース]ロード.xls&lt;br&gt;
　　データダウン[全角スペース]ロード.xls&lt;br&gt;
　　データダウン@ロード.xls&lt;br&gt;
　　データダウン@@ロード.xls&lt;br&gt;
　　データダウン＠ロード.xls&lt;br&gt;
　　関係ない.xls&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
【以下推測】&lt;br&gt;
どうやら、*、?の一般的なワイルドカードを使わない検索の場合に使う半角スペースは、&lt;br&gt;
*と同様に、0文字以上の文字列に相当する。&lt;br&gt;
&lt;br&gt;
ただし、キーワードに　*、?　があると。。。その機能は変わる。&lt;br&gt;
【検証8】で、&lt;br&gt;
データダウン[半角スペース]ロード.xls&lt;br&gt;
が、ヒットしないのは謎&lt;br&gt;
どのようになるかは、不明&lt;br&gt;
（誰か知ってる人は教えてください。）&lt;br&gt;
&lt;br&gt;
全角スペースは、文字として認識されワイルドカードのような機能は無いようだ。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
まあ、そんな感じなので、俺俺ワイルドカードメソッドは、&lt;br&gt;
*と?のみの対応にしよう。。。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
検証環境 WinXp Pro Sp2&lt;br&gt;
&lt;img src ="http://blogs.wankuma.com/koutarou/aggbug/63204.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>koutarou</dc:creator><title>DLLの配置の勘違い</title><link>http://blogs.wankuma.com/koutarou/archive/2006/12/07/48882.aspx</link><pubDate>Thu, 07 Dec 2006 00:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/koutarou/archive/2006/12/07/48882.aspx</guid><wfw:comment>http://blogs.wankuma.com/koutarou/comments/48882.aspx</wfw:comment><comments>http://blogs.wankuma.com/koutarou/archive/2006/12/07/48882.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blogs.wankuma.com/koutarou/comments/commentRss/48882.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/koutarou/services/trackbacks/48882.aspx</trackback:ping><description>&lt;P&gt;.NET Framework アプリケーションでは、system32やパスを通したフォルダにDLLを集めても駄目なのね。&lt;BR&gt;知らなかったっす。。。&lt;/P&gt;
&lt;P&gt;&amp;lt;codeBase&amp;gt;や&amp;lt;probing&amp;gt;は、知ってたし使ってた事あったんだけどね。&lt;BR&gt;だけど、今回のは。。。参照する側のexeも多いし、参照される側のdllも多いし。。。（謎ｗ）&lt;BR&gt;かといって、○○○個もGACに入れる事も（汗&lt;/P&gt;
&lt;P&gt;まあ、フラットで配置するしかないのかなー&lt;BR&gt;明日、もうちょっと勉強がてら調べてみようと&lt;/P&gt;
&lt;P&gt;（とりあえず開始URL）&lt;/P&gt;
&lt;P&gt;ランタイムがアセンブリを検索する方法&lt;BR&gt;&lt;A href="http://msdn2.microsoft.com/ja-jp/library/yx7xezcf(VS.80).aspx"&gt;http://msdn2.microsoft.com/ja-jp/library/yx7xezcf(VS.80).aspx&lt;/A&gt;&lt;BR&gt;コードベースまたはプローブによるアセンブリの検索&lt;BR&gt;&lt;A href="http://msdn2.microsoft.com/ja-jp/library/15hyw9x3(VS.80).aspx"&gt;http://msdn2.microsoft.com/ja-jp/library/15hyw9x3(VS.80).aspx&lt;/A&gt;&lt;BR&gt;@it　第3回　アセンブリのロード&lt;BR&gt;&lt;STRONG&gt;&lt;A href="http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_03/idnfw11_03_01.html"&gt;http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_03/idnfw11_03_01.html&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/koutarou/aggbug/48882.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>koutarou</dc:creator><title>DataGridViewのセルを編集時に別フォーマットにする</title><link>http://blogs.wankuma.com/koutarou/archive/2006/09/01/37481.aspx</link><pubDate>Fri, 01 Sep 2006 16:36:00 GMT</pubDate><guid>http://blogs.wankuma.com/koutarou/archive/2006/09/01/37481.aspx</guid><wfw:comment>http://blogs.wankuma.com/koutarou/comments/37481.aspx</wfw:comment><comments>http://blogs.wankuma.com/koutarou/archive/2006/09/01/37481.aspx#Feedback</comments><slash:comments>371</slash:comments><wfw:commentRss>http://blogs.wankuma.com/koutarou/comments/commentRss/37481.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/koutarou/services/trackbacks/37481.aspx</trackback:ping><description>＜概要＞&lt;br&gt;
DataGridViewのあるカラムに、カンマ付き数値を表示。&lt;br&gt;
編集のタイミングでカンマを取って編集したい。&lt;br&gt;
&lt;br&gt;
＜例＞&lt;br&gt;
private void dgvList_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)&lt;br&gt;
{&lt;br&gt;&lt;ul&gt;
if (e.ColumnIndex == 8)&lt;br&gt;
{&lt;br&gt;&lt;ul&gt;
//編集中じゃなきゃ、カンマ付きにフォーマット&lt;br&gt;
if (dgvList[e.ColumnIndex, e.RowIndex].IsInEditMode == false)&lt;br&gt;
{&lt;br&gt;&lt;ul&gt;
//e.Valueのチェックとかいるかもね&lt;br&gt;
e.Value = e.Value.ToString("###,##0");&lt;br&gt;
}&lt;/ul&gt;
else&lt;br&gt;
{&lt;br&gt;&lt;ul&gt;
//処理無し&lt;/ul&gt;
}&lt;/ul&gt;
}&lt;/ul&gt;
}
&lt;br&gt;
&lt;br&gt;
private void dgvList_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)&lt;br&gt;
{&lt;br&gt;
	if (e.ColumnIndex == 8)&lt;br&gt;
	{&lt;br&gt;
		//フォーマットの仕方は、ご自由に&lt;br&gt;
		dgvList[e.ColumnIndex, e.RowIndex].Value = dgvList[e.ColumnIndex, e.RowIndex].Value.ToString().Replace(",", string.Empty);&lt;br&gt;
	}&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
＜例　補足＞&lt;br&gt;
e.ColumnIndex == 8の列には、数値系型のデータがバインドされてる。&lt;br&gt;
実装時には、DataGridViewTextBoxColumn等のカラムオブジェクト.Indexがスマートかな？&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;ポイント&gt;&lt;br&gt;
・CellFormattingイベント内で、IsInEditModeによって、編集中かどうかを判断。（カンマをつける）&lt;br&gt;
・CellBeginEditで、イベント内で編集用フォーマットに切り替える。（カンマを取る）&lt;br&gt;
・CellBeginEditでカンマ取っても、Valueにセットする行為で、CellFormattingイベントが発生するのでIsInEditModeでの判断を入れないと無駄（取った瞬間、カンマ付きになるので永遠にカンマ付き）&lt;br&gt;
&lt;br&gt;
＜まとめ＞&lt;br&gt;
表示フォーマットと編集フォーマットが違う場合には、上記でいけそうだ。&lt;br&gt;
注意するのは、「単純に表示時にカンマつけてよ！」って仕様書に書いてる時は、CellFormattingでしちゃだめです。&lt;br&gt;
理由は、重いから。昨日のエントリ見て下さい。&lt;br&gt;
http://blogs.wankuma.com/koutarou/archive/2006/08/31/37323.aspx#37324&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
＜今日の感想＞&lt;br&gt;
DataGridViewは、イベント多すぎで手ごわいな。。。&lt;br&gt;
ヘルプとかだけじゃ掴みきれないし、Google様もあまり教えてくれない。&lt;br&gt;&lt;img src ="http://blogs.wankuma.com/koutarou/aggbug/37481.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>koutarou</dc:creator><title>DataGridViewに数値を日付形式フォーマットみたいな</title><link>http://blogs.wankuma.com/koutarou/archive/2006/08/31/37323.aspx</link><pubDate>Thu, 31 Aug 2006 14:38:00 GMT</pubDate><guid>http://blogs.wankuma.com/koutarou/archive/2006/08/31/37323.aspx</guid><wfw:comment>http://blogs.wankuma.com/koutarou/comments/37323.aspx</wfw:comment><comments>http://blogs.wankuma.com/koutarou/archive/2006/08/31/37323.aspx#Feedback</comments><slash:comments>601</slash:comments><wfw:commentRss>http://blogs.wankuma.com/koutarou/comments/commentRss/37323.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/koutarou/services/trackbacks/37323.aspx</trackback:ping><description>＜概要＞&lt;br&gt;
DataGridViewへDataTableをBindさせ数値型データ（８桁）をスラッシュ付き(yyyy/MM/dd)形式で表示&lt;br&gt;
&lt;br&gt;
＜経緯＞&lt;br&gt;
今回の案件の全部日付カラムは、整数８桁だ。（年月６桁）&lt;br&gt;
（その設計は、ＤＢ設計担当者に聞いてくれ。オラしらね）&lt;br&gt;
んでもって、それをDataGridViewに表示時にスラッシュ付きフォーマットに変換して表示してみた。&lt;br&gt;
（プロパティデザイナで設定するDefaultCellStyleのFormatをDに設定しても、数値型だと変換出来ないので）&lt;br&gt;
&lt;br&gt;
＜例＞&lt;br&gt;
/// グリッドセル　フォーマット設定&lt;br&gt;
private void dgvList_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)&lt;br&gt;
{&lt;br&gt;
&lt;ul&gt;
    //データソース　８桁の整数値の日付の表示をスラッシュ付きに変換&lt;br&gt;
    //細かい判定や例外処理は、各自でよろしく&lt;br&gt;
    if (e.ColumnIndex == YMD.Index)&lt;br&gt;
    {&lt;br&gt;
&lt;ul&gt;
        //適当に変換方法変えてね&lt;br&gt;
        e.Value = (e.Value).ToString().Insert(4,"/").Insert(7,"/");&lt;br&gt;
&lt;/ul&gt;
    }&lt;br&gt;
&lt;/ul&gt;
}&lt;br&gt;
&lt;br&gt;
SQLで形式って手もあるけど、当然そうなるとそのDataGridView専属のSQLになるので、これでやってみた。&lt;br&gt;
&lt;br&gt;
＜難点＞&lt;br&gt;
ただ、CellFormattingイベント&lt;br&gt;
&lt;ul&gt;&lt;i&gt;
	**MSDN抜粋**&lt;br&gt;
	CellFormatting イベントはセルが塗りつぶされるたびに発生するため、&lt;br&gt;
	このイベントを処理するときは時間のかかる処理を回避する必要があります。&lt;br&gt;
	このイベントは、セルの FormattedValue が取得された場合や、&lt;br&gt;
	GetFormattedValue メソッドが呼び出された場合にも発生します。&lt;br&gt;
&lt;/i&gt;&lt;/ul&gt;
との事なんで、しょっちゅう発生します。&lt;br&gt;
非表示から、表示に切り替えたりしただけで動いてました。&lt;br&gt;
それゆえ、当然、表示データ量が多かったり、フォーマットする列が多かったり、&lt;br&gt;
フォーマット処理自体が重いと見苦しくなる可能性あります。&lt;br&gt;
&lt;br&gt;
なんか、別に良い方法があったら教えて下さい。&lt;br&gt;
（とりあえず、いまさら日付型に変更なんて出来ないから今回はこれで！妥協orz）&lt;br&gt;


&lt;img src ="http://blogs.wankuma.com/koutarou/aggbug/37323.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>