ホーム › フォーラム › OTZControls.NET › スピンコントロールのダークモードは可能ですか?
- このトピックには15件の返信、1人の参加者があり、最後に
あきらにより2年、 11ヶ月前に更新されました。
-
投稿者投稿
-
あきら
ゲストC#で.NET6のWinFormsを使用したアプリ作成しています。
ダークモードに対応するため、サンプルをダウンロードしてみました。
数値の増減をコントロールするスピンコントロールはダークモードに対応できるでしょうか?
TZキーマスターお問合せありがとうございます。ダークモード化できるか確認してみます。
TZキーマスター確認しました。ボタン部分を独自描画すればダークモード化できそうです。次のリリースで公開します。
あきら
ゲストありがとうございます。
ソース購入したので期待しています。
TZキーマスターご購入ありがとうございます。お待たせしました。スピンボックスコントロールをダークモード化したものをリリースしました(v4.0.3)
よろしくお願いいたします。あきら
ゲスト早速の対応ありがとうございます。
フォーム上に配置したコントロールは正常にダークモードに切り替わりましたが、
ToolStripに配置したコントロール(ToolStripControlHostの派生クラスでラップしたTZNumericUpDown)は
EnumChildWindowsがCount:0で失敗するようです。
TZキーマスターご連絡ありがとうございます。なるほど。ToolStrip に配置されるんですね。
まったく想定していませんでした。確認します。あきら
ゲストダークモードの切り替えを2回行うと正常に配置されました。
タイミングの問題ですかね。
TZキーマスターフォームが表示されていない状態(コンストラクタなど)でダークモードの設定をするとカウント0のエラーになりますね。
Load か Shown イベントでダークモードの設定をすると回避できますが、対策を考えてみます。あきら
ゲストフォームのロードイベントでテーマ設定することで回避できました。
ありがとうございました。
話は変わりますが、ListViewコントロールのヘッダ部分について、darkmode_itemsviewでダークモードになりますが、
OnDrawColumnHeaderの設定により、ヘッダ部のクリックで選択色が変わったり、ソートマークが消えたり、マウスのホーバー反応がなくなったり問題があります。これらは回避できるのでしょうか?
TZキーマスター確認しました。難しいですね。ダークモードにした時点でマウスホーバーはしなくなりますね。
オーナードローでどこまで実装するかになると思います。ちなみに、ソートマークはどのようにして表示しているのでしょうか?あきら
ゲストOnDrawColumnHeader で e.DrawDefault = true;すれば、文字色以外は良い感じなんですけどね。
下記のページでWM_NOTIFYによる回避方法が紹介されていましたが、どうなんでしょう。
https://github-wiki-see.page/m/tablacus/TablacusDark/wiki/listviewソートマークは、HDM_GETITEM して HDITEM にフラッグを設定、HDM_SETITEMしてます。
TZキーマスターありがとうございます。リストビューの実装を変更してv4.0.4をリリースしました。ソートマークは公開ソースには含まれていませんが、マークが表示されるところまでは確認しました(ソートマークは実装が必要なんですね…。)
ただ、現時点では、下記に該当すると別途実装が必要そうです。他にもあるかもしれません。
・行選択を FullRowSelect=false で利用したい場合
・フォーカスアウトした場合の選択色を変えたい場合あきら
ゲストListView の選択色(背景色)は、OnDrawItemで
base.OnDrawItem(e);
if(e.Item.Selected){
e.Graphics.FillRectangle(Brushes.DarkCyan, e.Bounds);
}
e.DrawDefault = true;
で変更できるようです。
TZキーマスターありがとうございます。あと、スピンボックスの問題(EnumChildWindowsがCount:0)は回避できそうにないので Load イベント以降でテーマ設定しないといけない制約となります…。
あきら
ゲスト了解しました。
-
投稿者投稿