<?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>CompactFramework</title><link>http://blogs.wankuma.com/tyato/category/1937.aspx</link><description>CompactFramework関連について記述します</description><managingEditor>ちゃと</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>ちゃと</dc:creator><title>あけまして</title><link>http://blogs.wankuma.com/tyato/archive/2009/01/03/165540.aspx</link><pubDate>Sat, 03 Jan 2009 18:46:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyato/archive/2009/01/03/165540.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyato/comments/165540.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyato/archive/2009/01/03/165540.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyato/comments/commentRss/165540.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyato/services/trackbacks/165540.aspx</trackback:ping><description>&lt;p&gt;昨年9月から全く更新していませんでした・・・&lt;/p&gt; &lt;p&gt;LiveWriterがこんな便利なんやったらもっと早く使っておけばよかった　orz&lt;/p&gt; &lt;p&gt;改めてましてあけましておめでとうございます。&lt;br&gt;本年よろしくお願いします。&lt;/p&gt; &lt;p&gt;昨年WindowsCE関連の開発にかかわることができました。&lt;br&gt;前半はC言語にてPGというポジション、後半はC#.NETonCEでアーキ兼サブリーダ的ポジションで貴重な勉強をさせて頂けたと思います。&lt;br&gt;その中で得た、CE関連の日本語資料の少ないところをちょこちょこ書いていければいいなーと今年は思っています。&lt;br&gt;（もうしばらくCE関連開発に携わりますし。）&lt;/p&gt; &lt;p&gt;とりあえず年末で納品したんですが・・・最後はほんとひどかった。&lt;br&gt;５日で３徹とか久しぶりにやりました。もう勘弁デス。&lt;/p&gt; &lt;p&gt;痛感したのは、いわゆる前段階でのミスを取り消すには10倍時間がかかる法則でしょうか。&lt;/p&gt; &lt;p&gt;特に要件定義段階でユーザとの意思疎通に大きく失敗していたため、自分のポジションでもっと意識的に動くべきだったなぁと猛省する年末でした。&lt;/p&gt; &lt;p&gt;反省とかはこのへんにして。&lt;/p&gt; &lt;p&gt;9月に「&lt;a href="http://blogs.wankuma.com/tyato/archive/2008/09/08/155857.aspx"&gt;CompactFrameworkでのCausesValidation&lt;/a&gt;」って書いたんですが、それなりに形にまとめることができました。&lt;/p&gt; &lt;p&gt;結局、CompactFramework（以降CF）ではCausesValidationプロパティがいないから、CancelボタンなどでValidation実施せずに抜けることができないぢゃん！ってことへの対策ですな。&lt;/p&gt; &lt;p&gt;結論からいうと、ValidationのイベントをCFに任せず、コントロールのGotFocusイベント（2.0ベースの開発なもので。。）で独自実装したCausesValidationプロパティによって直前のコントロール内容を検証するってなものになりました。&lt;br&gt;まぁこれが実現できたのは「Button」と「TextBox」しか実装しないで済んだからなんですけど。&lt;/p&gt; &lt;p&gt;&lt;pre style="background-color: yellow"&gt;private void MyTextBox_GotFocus(object sender, EventArgs e)
{
	try
	{
		if (this.CausesValidation &amp;amp;&amp;amp; manageControl.ins.PrevControl.GetType() == Type.GetType(MyTextBox))
		{
			MyTextBox mt = (MyTextBox)manageControl.ins.PrevControl;

			//予めコントロールに関連づけておいた検証内容を実施する
			mt.ValidateData();
			mt.SetNormal();
		}
	}
	catch (MyValidateException)
	{
		if (manageControl.ins.PrevControl.GetType() == Type.GetType(MyTextBox))
		{
			//検証エラー時の動作
			MyTextBox mt = (MyTextBox)manageControl.ins.PrevControl;

			//一時的に検証が発生しないようにする(Nextの内容について検証が始まってしまうため)
			mt.CausesValidation = false;

			//エラーが発生(背景色を赤くする)
			mt.SetError();

			//フォーカスをセット
			mt.Focus();

			//フォーカスセットが完了したので検証フラグを元に戻しておく
			mt.CausesValidation = true;
		}
	}
	catch (Exception)
	{
		throw;
	}

}
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ぬー。実際のソースが手元にないから結構忘れてますな。。。&lt;/p&gt;
&lt;p&gt;なんしかこんな感じです。実際はもっと緻密にやってますが。&lt;/p&gt;
&lt;p&gt;とりあえず今日はこのへんで &lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/tyato/aggbug/165540.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃと</dc:creator><title>CompactFrameworkでのCausesValidation</title><link>http://blogs.wankuma.com/tyato/archive/2008/09/08/155857.aspx</link><pubDate>Mon, 08 Sep 2008 16:41:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyato/archive/2008/09/08/155857.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyato/comments/155857.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyato/archive/2008/09/08/155857.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyato/comments/commentRss/155857.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyato/services/trackbacks/155857.aspx</trackback:ping><description>&lt;P&gt;サポートされてないんですな。CEでは。&lt;/P&gt;
&lt;P&gt;キャンセルボタン押したときにValidating走らせないように頑張り＆調査中。&lt;/P&gt;
&lt;P&gt;AutoValidateプロパティOFFにして、カスタムコントロールだらけで、自前CausesValidation実装して、Validatingイベントを自分で操作するのが最も正解かなぁとか考え中。&lt;BR&gt;その場合、LostFocus～GotFocus後でのValidatingイベントになってしまうとは思うけど。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyato/aggbug/155857.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>