C#

Windowsのテーマ変更を知る

C#

現在のテーマの調べ方 現在のテーマが何に設定されているかどうかは以下のレジストリを確認すればOK。 レジストリパスはWindows XPの場合も Vistaの場合も同じ。 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager] ColorNameが存…

XMLシリアライズ時のInvalidOperationException

C#

オブジェクトをシリアライズする際には,引数なしのコンストラクタが必要.(コンストラクタを一つも定義していなければデフォルトコンストラクタ(引数なし)がoverrideされるから問題ない). もし,引数ありのコンストラクタのみを定義し,引数なしのコン…

配列のシリアライズで、配列そのものにタグを与えたくない

C#

System.Xml.Serialization.XmlSerializer を使用してプロパティに配列を持つオブジェクトを普通にXMLシリアライズすると、配列にタグがついて、さらに配列の要素一つ一つにもタグがつく. たとえば, class Person { int id; String name; // ... setter, ge…

自ホスト名からIPアドレスを知る方法

C#

IPアドレスだけ知りたいなら,もうちっと簡単な方法がある. ただ,自ホスト名からIPアドレスを引くだけなので,これだけで信用していいものやら,という感じはある. string hostname = Dns.GetHostName(); foreach (IPAddress ipAddress in Dns.GetHostAdd…

Win32_NetworkAdapterConfigurationからネットワーク設定情報を取得

C#

OSのネットワーク設定情報からIPアドレスやMACアドレス,ネットワークインタフェース名などを引くことができる. まず最初に,System.Managementを参照に追加しておく. やりかた(VisualStudio)は,「プロジェクト」メニュー→「参照の追加」→「.NET」タブ…

画像を縮小する

C#

というわけでおまけとしてC#.NETの場合も. このサンプルを作ったときのコンテキストの都合上,こちらは元画像がTIFのものを縮小した上,pngに変換して出力している. /** * 縮小ボタンが押されたときの処理 */ private void button1_Click(object sender, S…

Font / Color のXMLシリアライズ

C#

先の例を拡張し,投稿メッセージのフォント(System.Drawing.Font)や色(System.Drawing.Color)もシリアライズしようとすることを考える. 単純に,Contributionクラスに以下の2つのフィールドを追加する.(コンストラクタ等も修正する) public Font msg…

XMLシリアライズ

C#

というわけでオブジェクトをXMLシリアライズする方法. System.Xml.Serialization.XmlSerializer を使う.まず,シリアライズするオブジェクトは以下の通り. Contributionオブジェクト内にさらにUserオブジェクトがある構造. /// /// 投稿を表すクラスです…

C#でのGetter / Setter

C#

普通にJavaの感覚で(public get*** / set*** 〜)書いていたのだけど違ってたようだ…(汗) XMLシリアライズしてて(別項参照)気づいた.というわけでC#はこんな感じ private string message; //表示メッセージ public string msg { get { return message;…

埋め込まれたりソースを使う方法

C#

とりあえず,リンクだけ.http://dobon.net/vb/dotnet/programing/bitmapresource.html

プロセス終了時の sendProcess_Exited イベントについて

C#

C#で書いているフォームとかで外部の他のプロセスを駆動させて,そいつの終了時になんらかの後処理を入れたいときは sendProcess_Exitedイベントを使ってハンドルする.ところがこのsendProcess_Exitedイベントってのは, 駆動した外部プロセスが正常に終了…

C#版Iterator

C#

Javaでいうところの Iteratorに相当するものが,C#では IEnumerator らしい.たとえば,1/24に書いた例をC#で書くなら, // ユーザ一覧を作成します ArrayList users; users.Add(new User(…));// ユーザ一覧を表示します IEnumarator e = users.getEnumerato…