Category Archives: C# カテゴリ "C#"のRSS  

[C#]NumericUpDownコントロールの出力をintで受け取る

2014年1月3日 (カテゴリ: C#:)

範囲が決まっている数値を入力させたい場合、NumericUpDownコントロールを使用すると、数値チェックや範囲チェックを自動で行ってくれるので便利です。 NumericUpDownに入力された結果はValueプロパティで取得できるのですが、Valueプロパティはデータ型がintではなくDecimalになっています。 結果をintで受け取りたい場合は、以下のコードで型変換が可能です。 int intVal = Decimal.ToInt32( numericUpDown1.Value );int intVal = Decimal.ToInt32( numericUpDown1.…


続きを読む

[C#]文字列をMD5ハッシュ化し,文字列として返すメソッド

2013年6月24日 (カテゴリ: C#:)

C#では、MD5ハッシュ値を、System.Security.Cryptography.MD5クラスを使って計算できます。 実際の計算処理もComputeHashメソッドをコールするだけです。 public byte[] ComputeHash( byte[] buffer )   public byte[] ComputeHash( Stream inputStream )   public byte[] ComputeHash( byte[] buff…


続きを読む

[C#]Escキーを押したらフォームをクローズさせる方法

2013年4月23日 (カテゴリ: C#:)

C#(.NetFramework)で、Escキーを押したらフォームをクローズさせる方法です。 FormのKeyPreviewをtrueに下上で、KeyPressのイベントハンドラに以下のコードを書きます。 private void Form1_KeyPress( object sender, KeyPressEventArgs e ) { if ( e.KeyChar == (char)Keys.Escape ) { this.Close(); } }private void Form1_K…


続きを読む

[C#]switch文のcase句の中だけで有効な変数を宣言する[C,C++,javaも同様]

2012年12月5日 (カテゴリ: C, C#, Java:)

プログラム中に例えば、以下の様なswitch文があったとします。 void func( int inData ) {   switch ( inData ) { case 1: …; break; case 2: …; break; } }void func( int inData ) { switch ( inData ) { case 1: …; break; case 2: …; break; } } このcase句の中で、ワークの一時変数を使いたい場合、以下のようにcase内で宣言する事が…


続きを読む

[C#]DataGridViewで選択行を画面に表示させる

2012年12月2日 (カテゴリ: C#:)

以下のコードで、DataGridViewで選択されている行が画面の一番上の行に表示されます。 if ( DataGridView1.SelectedCells.Count > 0 ) { DataGridView1.FirstDisplayedScrollingRowIndex = DataGridView1.SelectedCells[0].RowIndex; }if ( DataGridView1.SelectedCells.Count > 0 ) { DataGridView1.FirstDisplayedScrolling…


続きを読む

[PIC]HI-TECH Cのサンプルプログラムを逆アセンブルしてみる

2012年12月2日 (カテゴリ: C#, PIC:, )

前に作りかけたPic16f84のCPUシミュレータですが、暇が出来たので開発を再開させます。 ずいぶん久しぶりなので、何をやってたかを思い出すのを兼ねて、動作確認用サンプルのhexファイルを作る事にします。 今回の対象はHI-TECH Cのコンパイラをインストールしたときに一緒に入っているサンプルPGです。 ファイルは、標準インストールだと以下の辺りに入ってます。 C:\Program Files\HI-TECH Software\PICC\9.83\samples\misc\led.cC:\Program Files\HI-TECH Software\PICC\9.83\samples\mi…


続きを読む

[C#]DataGridViewでプログラムから列の追加/削除を行う

2012年11月25日 (カテゴリ: C#:)

列の追加 DataGridViewColumn col;   // Titleと表示名を指定して追加 dataGridView1.Columns.Add( "ColItemCode", "商品コード" );   // 列定義のオブジェクトを使って追加 col = new DataGridViewColumn(); col.Name = "ColItemName"; col.HeaderText = "商品名称"; dataGridView1.Columns.Add…


続きを読む

[C#]ManicTime風な,使用アプリ記録ソフトを自作する

2012年11月17日 (カテゴリ: C#:)

WindowsでManicTimeというソフトを使用すると、PCで使用していたアプリケーションのログを採取することが出来ます。PCでどんなアプリを何分使っていたかの作業ログを取る事で、無駄な時間をだらだら過ごしていないか自分の作業内容への振り返りをするきっかけになりまし、ライフログ的な使い方も出来ます。 ライフログの技術 ManicTimeはシンプルかつ分かりやすいUIで、気軽に使うには便利なのですが、採取したログを自分でExcelなどを使用して分析したかったので、同様の機能を持つ記録アプリを作成してみました。 今回作成するのは見た目の部分ではなく、裏方部分のデータ収集処理なので、GUIは最低…


続きを読む

[C#]lock文で排他をとる仕組みがC#4.0で変更された件

2012年10月27日 (カテゴリ: C#:)

C#では、オブジェクトの排他を取るためにlock文があります。 lock( obj ) { body; }lock( obj ) { body; } これは、C#4.0の場合は以下のコードと等価です。 bool lockWasTaken = false; var temp = obj; try { Monitor.Enter(temp, ref lockWasTaken); { body; } } finally { if (lockWasTaken) { Monit…


続きを読む

[C# 5.0]メソッドの呼び元メソッドを調べる方法

2012年10月27日 (カテゴリ: C#:)

C# 5.0では、関数の引数に属性(attribute)を追加する事で、関数の呼び元の情報を取得が可能です。 これはC言語で言う__LINE__,__FILE__マクロ相当のものです。 C#の4.0以前でもリフレクションや、System.Diagnostics.StackTraceを使えば取得は出来たのですが、5.0からは取得が簡単になりました。 ※C#4.0でSystem.Diagnostics.StackTraceを使う場合の例はこちら  → [C#]関数の呼び出し元のメソッド名を知る方法 という訳でサンプルコードです。 class Test { static void Main…


続きを読む

[C#]string,char,byteの相互変換

2012年10月22日 (カテゴリ: C#:)

文字を表現する各種データ型の変換方法です。 Stringから他の型に変換する場合は、文字コードの指定が必要となります。 string -> char string str = "hello world";   //文字列をcharの配列に変換する char[] charArray = str.ToCharArray();   //文字列を、1文字づつcharとして処理する foreach (char c in str) { Console.WriteLine( c ); &#125…


続きを読む

[C#]ファイルの中身を2進数で出力するツール(TextToBinaryDigit.exe)

2012年10月9日 (カテゴリ: C#:)

ファイルの中身を2進数でダンプする必要があったので、勉強もかねてC#で作ってみました。 コマンドラインプログラムで、以下の様な感じで使います。 c:\> type c:\input.txt Hello world にほんご   c:\> type c:\input.txt | TextToBinaryDigit.exe 01001000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100 00001101 00001010 10000010 11…


続きを読む

[C#]StreamReaderのRead()がcharではなくintを返す理由

2012年10月9日 (カテゴリ: C#:)

ファイルなどのストリームからデータを1文字読み込むためのメソッドとしてRead()というものが有ります。このメソッドは”1文字”読み込むのだから戻り値はcharでよいはずなのですが、なぜかint型になっています。 なぜintを返すような仕様となっているのでしょうか? それは、Read()メソッドの戻り値は、ファイルから取得した文字に加えて、ファイルの終端(EOF)を返してくるからです。EOFというのは、読み込んでいるファイルがファイルの最後に達してしまい、それ以上読むべきデータが無い状況です。 (ちなみに、EOFに達している状態でさらにRead()をコールしても-1が返…


続きを読む

[C#]指定されたASCIIコードをstring型の文字列に変換する

2012年10月9日 (カテゴリ: C#:, )

C#で、数字で指定されたASCIIコードをstring型の文字列に変換する方法です。 基本的には、charにキャストした上でToString()をコールすれば良いです。 int data = 2; string ans = ((char)data).ToString();int data = 2; string ans = ((char)data).ToString(); これで、ans には0x02(制御コードのSTX)が入ります。 キャストを忘れると正しく動作しません。 以下のコードだとansには”2″(数字の2)が入…


続きを読む

[C#]WebBrowerコントロールで、jQueryを使用して任意のJavaScriptを実行する

2012年10月8日 (カテゴリ: C#:, )

.Net Frameworkで用意されているWebBrowerコントロールを使用して、JavaScriptを実行できるプログラムを作成しました。実行するJavaScriptは素のままだと使い辛いので、jQueryを自動ロードしています。 例えば、Yahooのトップページに対して下記のコードを実行させると… $(’input#srchtxt’).val( "hello world" ); $(’input#srchbtn’).click();$(‘input#srchtxt’).val( "…


続きを読む

[C#]WebBrowserコントロールで、指定されたURLのページを表示させる

2012年10月8日 (カテゴリ: C#:)

以下のコードで、指定されたアドレスのページを表示させる事が出来ます。 private void button1_Click( object sender, EventArgs e ) { webBrowser1.Url = new Uri( "http://yahoo.co.jp/" ); }private void button1_Click( object sender, EventArgs e ) { webBrowser1.Url = new Uri( "http://yahoo.co.jp/"…


続きを読む

[C#]文字列中の制御文字を、[CR][LF]や[0D][0A]のように可視化する

2012年10月2日 (カテゴリ: C#:, , )

Stringオブジェクトの文字列中に制御文字(0x00~0x19)が入ると、TextBoxなどに値を表示する際、制御文字が入っている事を確認する事が出来ません。 このような場合、制御文字を他のテキスト文字に置き換えると分かりやすいです。 という訳で今回は、制御文字を可視化(例えば0x02を[STX]に置き換えるなど)させるコードを紹介します。 変換作業は、正規表現による置換機能を利用します。正規表現を使って制御文字をマッチさせたいのですが、幸いな事に.Netでは、制御文字は「\p{Cc}」というパターンであらわす事が可能です。 「\p{Cc}」って何???と思われるかもしれませんが、分解して考…


続きを読む

[C#]各種データ型と16進数文字列の変換方法

2012年10月2日 (カテゴリ: C#:, , )

byteの配列に入った値を16進文字列に変換する byte[] inData = { 0x01, 0x02, 0x88 }; string outStr = BitConverter.ToString( inData ); // 01-02-88byte[] inData = { 0x01, 0x02, 0x88 }; string outStr = BitConverter.ToString( inData ); // 01-02-88 16進文字列をbyteに変換する byte outByte = Convert.ToByte( …


続きを読む

[C#]ComboBoxのSelectedIndexをオブジェクト指定でセットする。

2012年10月1日 (カテゴリ: C#:)

ComboBoxでどの項目が選択されているかを,コードから指定(変更)したい場合があります。 このような場合、SelectedIndexプロパティをセットする事で目的を達成できるのですが、Index番号では無くItemsに登録されたオブジェクトで指定を行いたい場合も有ります。 このような場合は、以下のようにSelectedItemを使用すればOKです。 // フロー制御の選択肢を追加 cmbHandshake.Items.Add( System.IO.Ports.Handshake.None ); cmbHandshake.Items.Add( System.IO.Po…


続きを読む

[C#]DirectInputでジョイスティック(ゲームパッド)を使用する

2012年9月29日 (カテゴリ: C#:)

Windowsにはゲーム用のコントローラとしてジョイスティック(ゲームパッドとも呼ばれます)を使用することが出来ます。 ジョイスティックを使用することでPCに不慣れな人でも、直感的な操作で入力を行う事が可能です。ジョイスティックを制御するプログラムを書くにはDirectXを使用することが多いのですが、残念ながらC#(というか.Net Framework)を使用したジョイスティック制御プログラムの情報は少ないです。 そこで今回は、VisualStudio 2010で、C#からDirectXのDirectInputの機能を使用して、ジョイスティックを利用できるようにします。 開発環境 確認に使用し…


続きを読む