ラベル C# の投稿を表示しています。 すべての投稿を表示
ラベル C# の投稿を表示しています。 すべての投稿を表示

2023年9月25日月曜日

C#のTimer精度と挙動

Timerの精度云々

 C#のTimerはSystem.Timersのもの、System.Threadingのもの、GUI用のもの(Forms, WPF)があって云々とかは特にここでは触れません。とりあえずUI用じゃなければTimersのものを使っときましょう。
 また、いずれのタイマーも精度はよろしくありません。実測では15ms程度の分解能しかありませんでした。本当に精度が欲しいならwhileループでStopwatchの監視するのが一番手っ取り早いと思います。
 以下では意外と見向きされないTimerの特徴を実測で調べたので、Q&A形式で紹介していきます。なおタイマーはフリーラン状態(AutoReset==true)とします。実測環境は.NET6.0です。

2020年2月29日土曜日

WebViewのレイアウトがずれるときの対処法(C# WPF)

リサイズ時にWebViewのレイアウト崩壊

メインWindowに対して、左ペインに操作パネル、右ペインにWebViewを含むアプリケーションを作りました。普通に走らせるだけでは問題ありませんが、WindowをリサイズするとWebViewの中身の表示が崩壊します。
WebViewを親Gridに対してどうレイアウトするかによって、リサイズ時に崩壊するかどうかが決まるようで、試しに左右ペインのコントロールを入れ替え、左ペインにWebViewを表示させてみたところ、リサイズしても表示が崩れることはありませんでした。

※WebViewはEdge版(非Chrome)のものを使用しています。他のWebBrowser系のコントロールでも有効かどうかは不明です。

2018年11月19日月曜日

高DPI環境で作るフォームアプリケーション(C#)

フォームアプリケーションの高DPI対応

高DPI対応のアプリケーションを作りたいならWPF使えって話ですが、なにかとフォームアプリケーションの方が重宝したり。高DPI対応の方法はググればいくらでも出てきますが、それでもレイアウトが崩れたりすることがありました。今回はそれに対する対処法をなんとか見つけました。