C#

C#_特殊キーをクリックしたら処理を走らせる

ProcessDialogKey をオーバーライドするもよう。以下ただのコピペした記事。 以下の ProcessDialogKey を Form1 のコードに記述したら、特定キーを押したときの処理が走った。なお、イベントの KeyDown などは書いていない。 namespace Hoge { public partia…

C#_Task 関連一覧

↑ が投稿日付 new

C#_Task の処理を止める

Task.Run の外から止めたい。中からなら Task.Run(() => { // 処理 ;}); の { } の中で条件分岐をかいて return すればよい。 ・CancellationTokenSource.Cancel( ) を使う方法、・ContinueWith でキャンセル処理を行う方法、・CancellationTokenSource.Canc…

C#_Task を Wait は NG

デッドロックするから。 デッドロック:互いが相手の作業を終わるのを待っていて、どちらも身動きが取れなくなっている状況のこと。 ex ) public void HogeNG( ) { HogeAsyncNG( ).Wait( ); // 対応しない。死ぬ。 } private async Task HogeAsyncNG( ) { aw…

C#_async / await と UI

UIはシングルスレッド。このリソースを内部処理で長時間専用させたくない。 故に非同期メソッドには「まるで同期処理のような書き方で非同期処理を行えて、自然に UI 処理に組み込める」というものが期待された。 よって、 async / await は「非同期メソッド…

C#_戻り値が void と Task の違い

戻り値が void だと await がついた処理がいつ完了するかわからない。 await :Task 完了まで待つ、という意味なので同期的。 await しない場合、「誰かこの仕事実行して」と命令を投げるだけなのでタスク実行中に自分は本来の仕事の続きをこなせる。戻り値 …

C#_非同期メソッド / async / await

非同期メソッド: private async Task<int> Hoge( ) ・async をつけたメソッドのこと。async:非同期、非同期の。・メソッドの中で await を使えるようになる。・戻り値は必ず Task または Task<T> になる。・複数のタスクの実行手順を記述した一つのタスク。作業手</t></int>…

C#_Task とは

Task は非同期処理のことではない。名の通り「仕事、課題、作業の最小単位」。非同期処理における Task はスレッドを意識する必要がない。 ex ) var task = Task.Run(() => { HogeA(); HogeB(); }); 変数 task は「HogeA を実行後 HogeB を実行する、という…

C#_別スレッドからコントロールを操作 02

続き。↓前のコピペ。 private void buttonTest_Click(object sender, EventArgs e) { // 別スレッドで動かす Task.Run( ( ) => { for (int i = 0; i < 1001; i++) { Hoge(i); } }); } delegate void HogeDelegate(int i); private void Hoge(int i) { if (la…

C#_別スレッドからコントロールを操作 01

BeginInvoke と EndInvoke でも出来るようだがInvokeRequired の方が安全 ( スレッドセーフ ) らしいし、コードがなんか楽そう。 フォームでスレッドを生成した場合、フォームやコントロールに対して、その生成したスレッドからの操作は動作が保証されない。…

C#_Paint と Refresh のメモ

pictureBox.Paint イベントに、pictureBox.Refresh(); を書いたら常に Paint が呼ばれるようになった。何故。 Paint イベントは、コントロールが再描画されると発生。Refresh メソッドは再描画なのでループしていることになる。と思う。 Memo マウスドラッグ…

C#_Paint のタイミングメモ

図形CSV (x, y, w, h のデータ) を読み込み pictureBox に表示した画像に図形を描きたかったが、意外と時間がかかった。 結論から。Paint イベントに書く。 ※ Paint イベントをデザインのプロパティから済。 private void pictureBox_Paint(object sender, P…

C#_デリゲートで非同期呼び出しメモ

別スレッドからのコントロール操作は InvokeRequired を使う以外に、BeginInvoke・EndInvoke を使用する方法もあるが、Task があるので書かれないコードのもよう。だが、一応書き留めておく。 Task クラスが導入されて以降、BeginInvoke を使った非同期処理…

C#_Form やコントロールの更新

Invoke を使ったソースメモ。 経緯 以下のコードは最後の 1000 が表示されるのみ。1 ~ 順次表示されない。 理由は、for ループはメインスレッドを占領しているから。 画面描画もメインスレッドなので、スレッドが占領されている間は画面更新ができない。 fo…

C#_3 桁区切りの文字列に変換

{0:#,0} を使う。 # :桁プレースホルダ 0 :ゼロ・プレースホルダ , :カスタム書式指定子。 3 桁区切りを指定している。 単独では使えず、これらのプレースホルダの間に指定して使う。 桁プレースホルダ は、数字を表示するか何も表示しないことを指定。ゼ…

Visual Studio_スクロールバー の変更履歴をリセット

変更して保存していくとスクロールバーが緑になっていく。緑の箇所を目安にしている時があるので、多くなると不便故に調べた。 ↓ をやらずとも、ファイルを閉じて開けば緑消える。(追記) メニューバー の [ ツール ] → [ オプション ] 左メニューの [ テキス…

C#_List のメモというより参照型のメモ

new で実体を生成する。new で実体と矢印が出来る? List<T> test; test の中には、実体がある場所を指し示す矢印的なもの ( 参照 ) が入っている。これだけだと、T 型の List ができますよと宣言しているだけ。 List<hoge> test = new List<hoge>(); test.Add(fuga); new </hoge></hoge></t>…

C#_PictureBox のサイズを Image に合わせる

つまらんところでハマった。けどメモしとく。 Form → Panle → PictureBox と設置している場合。 Form 、Panel の両方とも AutoSize プロパティを True に設定。 PictureBox は Dock プロパティを Fill に設定。 これで Form のサイズが image に合う。 以上。

C#_List から特定の文字を含むものを除外

ex ) fuga が入っているファイル名以外を List に格納。 List<string> allFile = Directory.GetFiles(@"C:\Hoge\", "*.txt",SearchOption.TopDirectoryOnly).ToList(); string fuga = "fuga"; List<string> getFile = allFile.Where(file => !file.Contains(fuga)).ToList();</string></string>…

C#_xxx.dll またはその依存関係の 1 つが読み込めませんでした。見つかりません。

C#

OpenCV をインクルードしたプロジェクトを作るとよく出る。 Application.Run( new Form1( ) ); で例外発生。 ファイルまたはアセンブリ 'xxx.dll'、またはその依存関係の 1 つが読み込めませんでした。指定されたモジュールが見つかりません。 だが、実行フ…

C#_匿名関数とは

経緯M(int value) => X = value; が匿名関数だと思ってた。違かったので調べた。匿名関数=ラムダ式と捉えてよい感じ。 C# 2.0 では匿名メソッド式、C# 3.0 ではラムダ式という構文がある。これらを合わせて匿名関数と呼ぶ。 ラムダ式は匿名メソッド式の上位…

C#_テキストボックスのイベント一覧 ( M ~ V )

続き。コントロールと記載してあるのはテキストボックスのことだが、他のボタンやラベルでも同様のイベントあるだろうから、コントロールと記述。 名前 説明 MarginChanged コントロールのマージンが変更された時に発生。 Margin:他のコントロールとの間の…

C#_テキストボックスのイベント一覧 ( A ~ L )

テキストボックスのイベント一覧を取りあえず把握。他のイベントを知っていれば容易にコードかけた時あったので。 名前 説明 AcceptsTabChanged AcceptsTab プロパティの値が変更された時に発生。 AcceptsTab:Tab キーが押下された時に、次のコントロールへ…

C#_exe ファイルにドロップされたファイルのパスを取得

実行ファイルだけでなく、ショートカットにドロップしたファイルパスも取得可。img ファイルならパス取得後に pictureBox に img を表示したり。 ex ) ドロップしたファイル名のフルパスが表示される。 string[ ] files =Environment.GetCommandLineArgs(); …

C#_Dictionary の使い方

PHP の連想配列にあたるコレクションかと。添え字は通常数値だが、連想配列では好きな名前にできる。 添え字と値をセットで操作したい時は KeyValuePair を使う。 ex ) Dictionary の操作。string が key で Point が value。ソースは所々省略。 Dictionary<string, Point> </string,>…

C#_正規表現における「\」と「"」

「ファイル名に次の文字は使えません」の実装で意外とハマった。 結論から @ を用いた場合、「 " 」を指定したいなら「 "" 」と指定。 テキストボックスで入力した「 \ 」や「 " 」は「 \\ 」「 \" 」とエスケープされて送られてくる。 ※ using System.Text.…

C#_特定のキーを押下したら処理を走らせる

※ KeyDown イベントはビューデザイナーのプロパティから設置済み。 ex ) A キーを押下した場合、処理 X が走る private void Form_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.A) { return; } //処理 X } こちらから。 https://dobon.n…

C#_カーソルを砂時計にする ( 待機状態にする )

アプリが計算中の時、操作不可能に。and 処理が長いと終わったのかどうか分からないので。※ Win 10 では円が回っている状態。 // 元のカーソルを保持 Cursor preCursor = Cursor.Current; // カーソルを待機カーソルに変更 Cursor.Current = Cursors.WaitCur…

C#_ファイルパスからフォルダ名取得したり など

前提:openFileDialog ツールは設置済み ※ using System.IO; 文頭に記述。 ファイルパス取得 string path = openFileDialog.FileName; (フルパス取得。もちろんファイル名 + 拡張子あり) ex ) C:\HogeH\FugaF\aaa.txt ファイルを複数選択可にし、取得 openF…

C#_プロパティの自動実装機能(自動実装プロパティ)

getter / setter ( アクセサ― ) の簡略記述。 C# 3.0 から実装された。( 糖衣構文 )get / set する以外処理ない時は 自動実装プロパティの方が記述が楽。 public int HogeData { get; set; } HogeData プロパティ自体に値が保持される。なお、 set のみだと…