思っていたら、番号が見えたときに理解した。表に当選番号が手書きで書いてあるんだが、番号がソートされていない。大体の人が参加証を3、4枚持っている。・・・明日は改善されるかも。11.感想まあまあおもしろかった。初日のためか全体的に手際がいまいち悪かった。(日)C#自前でアプリケーションの設定を保存するとして、以下のような方針があると思います。1.XMLでファイルに保存⇒XMLファイルをパースして設定を復元2.設定クラスをシリアル化してファイルに保存⇒デシリアライズして設定を復元デシリアライズした後は、「⇒各部品の初期化に使う」という流れです。2の方針をとると設定項目が増えたとき、つまり設定クラスのメンバが増えたとき、古いバージョンの設定クラスをデシリアライズできなくなってしまい拡張性に乏しいところがあります。そこで、XMLにしとけば万事OKなわけですが、XMLをいちいちパースするのも結構メンドクサイし、なんとなく遅そうって感じもします。いうわけで私がとった方針は下記です。要約すると下記のようなクラスになります。}}コンストラクタでファイルを読み込み、デシリアライズします。ファイルがない場合はデフォルトの設定を適用します。デフォルトの設定はDefaultSetting()で行い、デシリアライズしたHashTableに設定がない項目(あるいはファイルがない場合は全項目)はここで値を代入しておきます。Save()でシリアライズして、バイナリで保存しておきます。上記例では対象アプリケーションが保存されているディレクトリの直下にMySetting.datというファイルを作成します。設定クラスですので、いくつもこのクラスのインスタンスがあるというのも変ですから、シングルトンパターンを適用します。そのためコンストラクタはprivateにしておき、実際に各部品から設定値を読み込むには以下のようにします。MySetting.Values.MyAplSize;「Values」が唯一のインスタンスを返すgetterになっています。各設定項目の取得はgetter,setterで行い、これがHashTableの値をラッピングしている形です。設定項目をひとつ作るごとにgetter,setterを作成、DefaultSetting()に追加、しないといけないので面倒といえば面倒ですが、一度仕組みを作ってしまえばどうということはありません。このやり方がXML方式に比べて本当に速いのか、本当に簡便なのかは甚だ疑問ですが、こうやって実装しちゃったもんは仕方ない。あと設定項目が減った場合はどうやってシュリンクするかという問題などもありますが、まあ、こんなもんで。(金)C#地味に更新してるRFR。すごい勢いでC#化してるこのブログですが、C#で設定を保存します。簡単に設定を保存するには、VS2005以降の場合、Properties.Settingsクラスを使ってすんげぇ簡単にできます。この方法だと保存されるファイルのパスを指定できません。Data/AppName/xxxxxxxxx/とかに保存されたりします。xxxxxxxxxの部分はアセンブリバージョン(?)が変わると変わっちゃいます。いうわけでどこに保存されるかわからんので気持ち悪いし、バージョンアップしたら設定を引き継げないし(まあ、引き継ぐ方法もあるけど)、自前で設定を保存するかぁ!ということになります。(火)C#なんと、HUNTER×HUNTERの新刊出るんですね。C#で例えば最大化とかのイベントを取得してみます。FormBorderStyleをtoolwindowとかにしておけば、最大化・最小化ボタンはなくなりますが、タイトルバーをダブルクリックしたり、右クリックから最大化とかを選択したら最大化されてしまいます。いうのを無効にしたいときはFormのWndProc()をオーバーライドします。}まー、この辺は完全にWin32APIの話ですが。ようにしてSC_MOVEをとれば移動できないようなものもつくれます。(土)C#しばらく更新サボってRSSリーダー作ってました。DesktopSidebarをぱくったものが出来上がってきました。そのうち公開したいと思います。いうわけでC#の話ですが、WebbrowserでファイルやURLじゃなく、文字列に格納されたHTMLを表示したい場合です。html;とまあ、こんな簡単な感じに動的なHTMLを表示させることができます。これだと更新できないみたいなんです。html2;とやっても表示されません。Document.Write()を使えばいけます。htmlString;}注意しないといけないのは、最初Documentプロパティはnullであることです。Write()でやることにしてみました。(月)C#最近WordPressの管理画面がばぐってる。微妙にいじったからかな・・・。いうわけでタイトルの通りです。要は、Webbrowser上でクリックされたリンク先URLをどうやってとるかという話です。Webbrowser.Documentにリスナーを登録します。Webbrowserそのものに登録してもだめ。HtmlElementEventHandler(Document_Click);リスナーの中身です。ToElementとかFromElementありますが、今回の場合どうもnullみたいで、取れているのはxy座標だけ。いうわけでGetElementFromPoint()をつかってHtmlElementを取得します。TagNameで要素を判断してるんですが、デバッガで見てみるとなぜか大文字になっていました。念のためどっちもみとく。他にいい方法あるのかもしれませんが、まあ、しらんし。imgタグをaタグで囲っているときとかもあると思うので、一応親要素までチェック。まじめにやるなら親がnullかなんかになるまでループで探索するのが良いと思われる。晴れてhref属性が取れた暁にはProcess.Start(link)で既定ブラウザを起動。InductorRFRみんなが小説家になるようです。