C#

別スレッドからフォームやコントロールを操作する

C#

Invokeメソッドを使う Form#InvokeもしくはControl#Invoke サンプル内容 処理開始とともにダイアログを表示 スレッドを10個作成 スレッドが全て終了後、ダイアログを閉じる サンプル using System; using System.Collections.Generic; using System.Componen…

フォルダ選択ダイアログ

C#

ダイアログの表示とパスの取得 FolderBrowserDialog fb = new FolderBrowserDialog(); if (fb.ShowDialog() == DialogResult.OK) { this.txtBox.Text = fb.SelectedPath; } 2回目以降のダイアログの開始位置を以前の場所からにする FolderBrowserDialog fb …

設定ファイルを活用する

C#

設定ファイルを利用するにはPropertiesの中に***.settingsファイルを追加する。初期状態ではSettings.settingsというファイルがあるので、よほどの理由がない場合これに設定値を追加する。 設定値の追加 Settings.settingsを開くと設定デザイナが開く。 おそ…

コントロールの相対位置指定

C#

Anchorプロパティでウィンドウの大きさに合わせる箇所を設定する 但し、幅を変更せずに、センタリングさせることはできないので、そういうときはOnSizeなどで相対的な位置を計算してやる必要がある

sprintfの代わり

C#

C#にはsprintfがない。 どうしても利用したいならC++なりでdllを作る必要があるようだ。ではネイティブに対応するにはどうするかというと、String#Formatを利用する例えばsprintf("%02d", 1)というのは、このように置き換えられる String.Format("0:D2", 1) …

stringからintに変換する

C#

String.Format("{0:D5}", foo)で桁を揃えようとしたんだけど、どうも数値型じゃないと変換してくれないみたい でも渡されるデータは文字列なので、文字列から数値に変換する必要がある。 キャストもできないし。。。と調べてみると Int32.Parse(foo) で、で…

TextBox内のスクロールを最後に固定する

C#

TextBoxに、処理中の経過を表示したかったんだけど、スクロールが一番上になって新しいメッセージが見れなくなってしまう。 そこで、表示を一番最後の行に固定するやり方を調べたら、以下のやり方が一番しっくりきた txtBox.AppendText(msg + System.Envirom…

ドラッグ&ドロップに対応する

C#

基本的な処理の流れは以下の通り DragEnterイベントを作る senderに対してDragDropEffects.Copyを行なう DragDropイベントを作る 2番目のDragDropEffects.Copyを行なわないとDragDropイベントは発生しませんということで書いてみる private void foo_DragEnt…