スピンコントロールのダークモードは可能ですか?

ホーム フォーラム Windows Forms用コントロール スピンコントロールのダークモードは可能ですか?

  • このトピックには15件の返信、1人の参加者があり、最後にあきらにより1年、 5ヶ月前に更新されました。
15件の投稿を表示中 - 1 - 15件目 (全16件中)
  • 投稿者
    投稿
  • #1438
    あきら
    ゲスト

    C#で.NET6のWinFormsを使用したアプリ作成しています。
    ダークモードに対応するため、サンプルをダウンロードしてみました。
    数値の増減をコントロールするスピンコントロールはダークモードに対応できるでしょうか?

    #1439
    TZTZ
    キーマスター

    お問合せありがとうございます。ダークモード化できるか確認してみます。

    #1441
    TZTZ
    キーマスター

    確認しました。ボタン部分を独自描画すればダークモード化できそうです。次のリリースで公開します。

    #1442
    あきら
    ゲスト

    ありがとうございます。
    ソース購入したので期待しています。

    #1447
    TZTZ
    キーマスター

    ご購入ありがとうございます。お待たせしました。スピンボックスコントロールをダークモード化したものをリリースしました(v4.0.3)
    よろしくお願いいたします。

    #1448
    あきら
    ゲスト

    早速の対応ありがとうございます。
    フォーム上に配置したコントロールは正常にダークモードに切り替わりましたが、
    ToolStripに配置したコントロール(ToolStripControlHostの派生クラスでラップしたTZNumericUpDown)は
    EnumChildWindowsがCount:0で失敗するようです。

    #1449
    TZTZ
    キーマスター

    ご連絡ありがとうございます。なるほど。ToolStrip に配置されるんですね。
    まったく想定していませんでした。確認します。

    #1450
    あきら
    ゲスト

    ダークモードの切り替えを2回行うと正常に配置されました。
    タイミングの問題ですかね。

    #1451
    TZTZ
    キーマスター

    フォームが表示されていない状態(コンストラクタなど)でダークモードの設定をするとカウント0のエラーになりますね。
    Load か Shown イベントでダークモードの設定をすると回避できますが、対策を考えてみます。

    #1452
    あきら
    ゲスト

    フォームのロードイベントでテーマ設定することで回避できました。
    ありがとうございました。
    話は変わりますが、ListViewコントロールのヘッダ部分について、darkmode_itemsviewでダークモードになりますが、
    OnDrawColumnHeaderの設定により、ヘッダ部のクリックで選択色が変わったり、ソートマークが消えたり、マウスのホーバー反応がなくなったり問題があります。これらは回避できるのでしょうか?

    #1453
    TZTZ
    キーマスター

    確認しました。難しいですね。ダークモードにした時点でマウスホーバーはしなくなりますね。
    オーナードローでどこまで実装するかになると思います。ちなみに、ソートマークはどのようにして表示しているのでしょうか?

    #1454
    あきら
    ゲスト

    OnDrawColumnHeader で e.DrawDefault = true;すれば、文字色以外は良い感じなんですけどね。

    下記のページでWM_NOTIFYによる回避方法が紹介されていましたが、どうなんでしょう。
    https://github-wiki-see.page/m/tablacus/TablacusDark/wiki/listview

    ソートマークは、HDM_GETITEM して HDITEM にフラッグを設定、HDM_SETITEMしてます。

    #1456
    TZTZ
    キーマスター

    ありがとうございます。リストビューの実装を変更してv4.0.4をリリースしました。ソートマークは公開ソースには含まれていませんが、マークが表示されるところまでは確認しました(ソートマークは実装が必要なんですね…。)

    ただ、現時点では、下記に該当すると別途実装が必要そうです。他にもあるかもしれません。

    ・行選択を FullRowSelect=false で利用したい場合
    ・フォーカスアウトした場合の選択色を変えたい場合

    #1457
    あきら
    ゲスト

    ListView の選択色(背景色)は、OnDrawItemで
    base.OnDrawItem(e);
    if(e.Item.Selected){
    e.Graphics.FillRectangle(Brushes.DarkCyan, e.Bounds);
    }
    e.DrawDefault = true;
    で変更できるようです。

    #1458
    TZTZ
    キーマスター

    ありがとうございます。あと、スピンボックスの問題(EnumChildWindowsがCount:0)は回避できそうにないので Load イベント以降でテーマ設定しないといけない制約となります…。

15件の投稿を表示中 - 1 - 15件目 (全16件中)
  • トピック「スピンコントロールのダークモードは可能ですか?」には新しい返信をつけることはできません。
タイトルとURLをコピーしました