<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>技術(.NET 2.0) </title><link>http://www.kslaboratory.com/blog/category/15.aspx</link><description>技術(.NET 2.0) </description><managingEditor>Kazuaki Shigetou</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Kazuaki Shigetou</dc:creator><title>[メモ]SourceGrid</title><link>http://www.kslaboratory.com/blog/archive/2008/06/17/357.aspx</link><pubDate>Tue, 17 Jun 2008 13:34:00 GMT</pubDate><guid>http://www.kslaboratory.com/blog/archive/2008/06/17/357.aspx</guid><wfw:comment>http://www.kslaboratory.com/blog/comments/357.aspx</wfw:comment><comments>http://www.kslaboratory.com/blog/archive/2008/06/17/357.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.kslaboratory.com/blog/comments/commentRss/357.aspx</wfw:commentRss><trackback:ping>http://www.kslaboratory.com/blog/services/trackbacks/357.aspx</trackback:ping><description>SourceGridのEditorで編集時に使用するコントロールを拡張する方法についてメモ(&lt;span
 style="font-weight: bold;"&gt;SourceGrid.Cells.Editor::TextBox&lt;/span&gt;に&lt;span
 style="font-weight: bold;"&gt;ImeModeプロパティ&lt;/span&gt;を追加するなど）。&lt;br&gt;
&lt;br&gt;
該当のEditorコントロールを継承し、OnStartingEditメソッドをオーバーライドすべし！！&lt;br&gt;
&lt;br&gt;
例）：ImeModeプロパティを追加&lt;br&gt;
&lt;table
 style="text-align: left; background-color: rgb(204, 204, 204); width: 100%;"
 border="1" cellpadding="2" cellspacing="0"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;using System;&lt;br&gt;
using System.Collections.Generic;&lt;br&gt;
using System.Text;&lt;br&gt;
using System.Windows.Forms;&lt;br&gt;
      &lt;br&gt;
namespace CSD.BusuKanri.Forms&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;
///&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
SourceGrid.Cells.Editors::TextBox を拡張するSourceGrid用のTextBoxエディタ&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public class
SourceGridTextBoxEx:SourceGrid.Cells.Editors.TextBox&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
private ImeMode _poImeMode = ImeMode.NoControl;&lt;br&gt;
      &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
/// &amp;lt;summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
///&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; コントロールのIMEモードを取得または設定します。&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
/// &amp;lt;/summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
public ImeMode ImeMode&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
get { return this._poImeMode; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
set { this._poImeMode = value; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
      &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
/// &amp;lt;summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
///&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
コンストラクタ。SourceGridTextBoxExクラスの新しいインスタンスを初期化する。&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
/// &amp;lt;/summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
/// &amp;lt;param name="aoType"&amp;gt;取り扱う入力値の型&amp;lt;/param&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
public SourceGridTextBoxEx(Type aoType):base(aoType){}&lt;br&gt;
      &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
/// &amp;lt;summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
///&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 編集を開始する。&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
/// &amp;lt;/summary&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
/// &amp;lt;param name="cellContext"&amp;gt;SourceGrid.CellContext
オブジェクト&amp;lt;/param&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
/// &amp;lt;param
name="editorControl"&amp;gt;編集用コントロール&amp;lt;/param&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
protected override void OnStartingEdit(SourceGrid.CellContext
cellContext, Control editorControl)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
      &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
base.OnStartingEdit(cellContext, editorControl);&lt;br&gt;
      &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
System.Windows.Forms.TextBox loTextBox = editorControl as
System.Windows.Forms.TextBox;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
if (loTextBox != null)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
loTextBox.ImeMode = this._poImeMode;&lt;br&gt;
      &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;img src ="http://www.kslaboratory.com/blog/aggbug/357.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kazuaki Shigetou</dc:creator><title>[.NET]DataSet内の検索とパフォーマンス</title><link>http://www.kslaboratory.com/blog/archive/2007/11/20/279.aspx</link><pubDate>Tue, 20 Nov 2007 15:05:00 GMT</pubDate><guid>http://www.kslaboratory.com/blog/archive/2007/11/20/279.aspx</guid><wfw:comment>http://www.kslaboratory.com/blog/comments/279.aspx</wfw:comment><comments>http://www.kslaboratory.com/blog/archive/2007/11/20/279.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.kslaboratory.com/blog/comments/commentRss/279.aspx</wfw:commentRss><trackback:ping>http://www.kslaboratory.com/blog/services/trackbacks/279.aspx</trackback:ping><description>&lt;P&gt;DataSetの検索には以下を考慮する。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;主キーを条件に検索する場合はDataTableのRowsプロパティのFindメソッドを使う。&lt;/LI&gt;
&lt;LI&gt;Selectメソッドはインデックスを利用しないので極力使わない。&lt;/LI&gt;
&lt;LI&gt;同じフィールドに対しての検索を繰り返す場合はDataViewを生成して（インデックスを生成して）FindまたはFindRowsメソッドを利用する。ただし、試行回数が少ない場合はインデックス生成のコストのほうが高くつくため、DataTableのSelectメソッドを利用する。&lt;/LI&gt;&lt;/UL&gt;&lt;img src ="http://www.kslaboratory.com/blog/aggbug/279.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kazuaki Shigetou</dc:creator><title>[.NET]DateTime.Nowの精度についてメモ</title><link>http://www.kslaboratory.com/blog/archive/2007/11/20/278.aspx</link><pubDate>Tue, 20 Nov 2007 14:49:00 GMT</pubDate><guid>http://www.kslaboratory.com/blog/archive/2007/11/20/278.aspx</guid><wfw:comment>http://www.kslaboratory.com/blog/comments/278.aspx</wfw:comment><comments>http://www.kslaboratory.com/blog/archive/2007/11/20/278.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.kslaboratory.com/blog/comments/commentRss/278.aspx</wfw:commentRss><trackback:ping>http://www.kslaboratory.com/blog/services/trackbacks/278.aspx</trackback:ping><description>.NET で現在の日付と時刻を取得するにはDateTime構造体（System名前空間）のオブジェクトのNowプロパティを呼び出す。&lt;BR&gt;ただ少し注意が必要なのは、このDateTime.Nowの精度は10ms前後らしく、10ms前後に一度DateTime.Nowの返す値が変わる&lt;BR&gt;&lt;BR&gt;だから以下のような処理をしたら、&lt;BR&gt;
&lt;TABLE style="TEXT-ALIGN: left" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="BACKGROUND-COLOR: rgb(204,204,204)"&gt;static void Main(string[] args)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("start {0:yyyy/MM/dd HH:mm:ss.ffffff}", DateTime.Now);//①&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(" なんか処理したよ");&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("end&amp;nbsp;&amp;nbsp; {0:yyyy/MM/dd HH:mm:ss.ffffff}", DateTime.Now);//②&lt;BR&gt;}&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;①～②間が0から10ms前後の場合だと同じ値が出力されることがあるわけで・・・。（マシンスペックや処理内容による）&lt;BR&gt;
&lt;TABLE style="COLOR: rgb(0,153,0); BACKGROUND-COLOR: rgb(0,0,0); TEXT-ALIGN: left" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;start 2007/11/20 14:33:05.510467&lt;BR&gt;&amp;nbsp;なんか処理したよ&lt;BR&gt;end&amp;nbsp;&amp;nbsp; 2007/11/20 14:33:05.510467&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;経過時間を正確に取りたい場合はSystem.Diagnostics.Stopwatch クラス（.NET Fx2.0の場合）を使うようにする。&lt;BR&gt;また、前回実行日時と今回実行日時を比較する場合なんかにDateTime.Nowで取得した値を使うのはNGなんだなぁ。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://www.kslaboratory.com/blog/aggbug/278.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kazuaki Shigetou</dc:creator><title>[.NET]Express Edition</title><link>http://www.kslaboratory.com/blog/archive/2007/11/19/276.aspx</link><pubDate>Mon, 19 Nov 2007 17:30:00 GMT</pubDate><guid>http://www.kslaboratory.com/blog/archive/2007/11/19/276.aspx</guid><wfw:comment>http://www.kslaboratory.com/blog/comments/276.aspx</wfw:comment><comments>http://www.kslaboratory.com/blog/archive/2007/11/19/276.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.kslaboratory.com/blog/comments/commentRss/276.aspx</wfw:commentRss><trackback:ping>http://www.kslaboratory.com/blog/services/trackbacks/276.aspx</trackback:ping><description>&lt;P&gt;VS 2005系のExpress Edtionのいまいちな点。&lt;/P&gt;
&lt;P&gt;・外部プロセスにデバッガのアタッチができない。&lt;BR&gt;・データアクセス部分のRADがローカルのSQLServerかmdbしか対応していない。&lt;BR&gt;・ソリューション管理が出来ない（GUIから管理できない）。&lt;/P&gt;
&lt;P&gt;うーん、外部プロセスにデバッガのアタッチが出来ないのは痛いな・・・。&lt;/P&gt;&lt;img src ="http://www.kslaboratory.com/blog/aggbug/276.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kazuaki Shigetou</dc:creator><title>IContextAttributeとContextAttribute</title><link>http://www.kslaboratory.com/blog/archive/2007/04/10/164.aspx</link><pubDate>Tue, 10 Apr 2007 22:49:00 GMT</pubDate><guid>http://www.kslaboratory.com/blog/archive/2007/04/10/164.aspx</guid><wfw:comment>http://www.kslaboratory.com/blog/comments/164.aspx</wfw:comment><comments>http://www.kslaboratory.com/blog/archive/2007/04/10/164.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.kslaboratory.com/blog/comments/commentRss/164.aspx</wfw:commentRss><trackback:ping>http://www.kslaboratory.com/blog/services/trackbacks/164.aspx</trackback:ping><description>&lt;P&gt;ちょっとハマッたのでメモ&lt;/P&gt;
&lt;P&gt;MessageSinkを利用して、メッセージベースの処理をインターセプトする場合、IContextAttributeの実装クラスで、ContextPropertyを追加する。&lt;/P&gt;
&lt;P&gt;しかし、SingleCallの場合の考慮をしないとStackOverflowが発生する。&amp;nbsp;SingleCallのときは同一のコンテキストで実行されるっぽいから、ContextPropertyをコンテキストに対して1度だけ追加しないといけない。IContextAttributeのIsContextOkメソッドでちゃんとContextの状態を検査してからtrue/falseを返さないとイケン。&lt;/P&gt;
&lt;P&gt;ContextPropertyが既に設定されているかの判定をスレッドセーフに行うのメンドクサイなぁ、とかおもっていたら.NET Fx2.0で追加されたContextAttributeクラスを継承すればあっさり解決。&amp;nbsp;※ContextAttributeはIContextProperty＋IContextAttributeの実装クラス でSingleCallの場合の考慮もされているっぽい。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;------------------------- &lt;/P&gt;
&lt;P&gt;整理する余裕がないため、備忘録的なPostです。&lt;/P&gt;
&lt;P&gt;いろいろ多忙＆トラブル続きのため見苦しいPostになってしまい申し訳ない。 &lt;/P&gt;&lt;img src ="http://www.kslaboratory.com/blog/aggbug/164.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Kazuaki Shigetou</dc:creator><title>.NET Remoting メモ</title><link>http://www.kslaboratory.com/blog/archive/2007/02/18/162.aspx</link><pubDate>Sun, 18 Feb 2007 22:37:00 GMT</pubDate><guid>http://www.kslaboratory.com/blog/archive/2007/02/18/162.aspx</guid><wfw:comment>http://www.kslaboratory.com/blog/comments/162.aspx</wfw:comment><comments>http://www.kslaboratory.com/blog/archive/2007/02/18/162.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.kslaboratory.com/blog/comments/commentRss/162.aspx</wfw:commentRss><trackback:ping>http://www.kslaboratory.com/blog/services/trackbacks/162.aspx</trackback:ping><description>&lt;P&gt;.NET 2.0で何年かぶりに.NET Remotingの検証＆サンプル作成をしたので少しメモメモ。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;チャネルを登録する&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;System.Runtime.Remoting.Channels.&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;ChannelServices&lt;/FONT&gt;&lt;/STRONG&gt;クラスの&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;RegisterChannel&lt;/FONT&gt;&lt;/STRONG&gt;メソッドに&lt;U&gt;&lt;FONT color=#ff0000&gt;セキュリティの有効/無効を指定するパラメータ「ensureSecurity」&lt;/FONT&gt;&lt;/U&gt;を第２引数にとるオーバーロードが追加された。&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;IpcChannel&lt;/FONT&gt;&lt;/STRONG&gt;が追加された。Ipcチャネルは別マシンとの通信はできない。同一マシン上に限られるがWindows上でプロセス間通信に最適化されたIPCを利用するため高速。&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;うーん、それにしても体調悪い・・・。ここのところ疲れ気味だなぁ。&lt;/P&gt;&lt;img src ="http://www.kslaboratory.com/blog/aggbug/162.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>