Category Archives: C#

C#でアセンブリのフルネームを知る

Linuxでdotnetをやってみる

インストール

いろいろなインストール方法があるようだが最も原始的なshファイルをダウンロードして実行する方法で行う。

これで~/.dotnet/にインストールされる。しかしパスが張られないので自分でやる必要がある。

これで使えるようになった。使えるようになったかテスト。

sdk,runtimeともに6.0.1がインストールされた。sdkは開発ツール、runtimeは実行環境。

コンソールアプリをつくる

つれくた。Program.csはC#のソースファイル、dntest.csprojはプロジェクトファイル。

実行してみる

できた

GUIアプリをつくってみる

WindowsではWinFormを使ったGUIアプリをつくれるが、Linuxではつくれない。そこでavaloniaというライブラリを利用してGUIアプリをつくってみる。まずはavaloniaテンプレートをインストールする必要がある。このテンプレートがあると新規アプリがつくれる。

つくれた。axamlファイルはウインドウの定義ファイル。

実行してみる

ランタイムの5.0がないため実行できないようだ。先程確認したように、今は6.0しかインストールされていない。

5.0をインストール

SDK、ランタイムとも5.0がインストールできた。

再び実行してみる

エラーが出てしまった。ここでは以下のようにして実行できた。

どうやら日本語環境だとエラーがでてしまうようだ。

C#のRichTextBoxのフォントが途中で変わる

RichTextBoxのIMF_DUALFONTIMF_AUTOFONTフラグをクリアする。デフォルトでオンになっている。

参考:http://pineplanter.moo.jp/non-it-salaryman/2017/11/25/post-5255/

C#のOpenFileDialogで拡張子exeの実行ファイルをフィルタして選択

C#とjavascriptの時間

基本

時間を表す言葉には時刻と時間間隔があるので時間という言葉ではあいまいになる。
どちらの場合も単位と基準点が問題になる。単位は秒とかミリ秒とかのこと、基準はUTCとか日本時間のこと。

Unix time stamp

UTCで1970/1/1からの秒を表す。今の値はこことかでわかる。

C#でこの値を得るには以下のコード

C#のDateTimeは0001/1/1からの100ナノ秒で管理しているようだ。3つの引数をとるコンストラクタはグレゴリオカレンダーで初期化するのでこれでいいらしい。

javscriptでこの値を得るには以下のコード

javascriptのDateはUTCで1970/1/1からのミリ秒で管理しているようだ。デフォルトのコンストラクタは今でgetTime()はミリ秒でUnix Epoch(=Unix time stamp)を返すので1000で割って秒にしている。

Unix time stampからオブジェクトをつくる

C#の場合は以下のようにやるらしい

これだとローカル時間が帰るので以下のように修正

javascriptの場合は以下

ソースコード

https://github.com/ambiesoft/blogprogs/tree/master/5705

System.Windows.Forms.TextBoxのvalidatingとvalidated

WinformのTextコントロールにはvalidatingvalidatedイベントがある。

validatingイベント

Textコントロールがフォーカスを失ったり、親のフォームが閉じられようとすると呼ばれる。引数はCancelEventArgsであり、Canceltrueを設定することで、キャンセルすることができる。

キャンセルされると、フォーカスが移動できなかったりする。

validatedイベント

validatingが成功すると(Cancelされなかった)呼ばれる。validatingは上記のような状況で呼ばれるので、そのときに呼ばれる。Text変更時にはvalidatingvalidatedも呼ばれない。

サンプル

https://github.com/ambiesoft/blogprogs/tree/master/5623/txtvalidateandchange

C# stringのreferenceEquals