none
ListViewItem(WinForm)のForeColorプロパティが適切に表示できない? RRS feed

  • 質問

  • こんにちは、yhoと申します。

     VS.NET2003を使用してWindowsFormを開発しています。

    以下の現象に悩んでおります。なにかアドバイスがございましたらご教授いただきたく、よろしくお願いいたします。

    (目的)

    WinForm上にListViewコントロールを貼り付け、ある特定行(ListViewItem)だけForeColorを赤色に変更したい。

     

    (悩みの現象)

    以下のコードにてプログラムを実行させると、ボタンクリック時に3行目のListViewItemのForeColorを赤色に変更することができます。しかし、その3行目をマウスで選択状態にしたあと、再び選択解除(ListViewコントロールのデータがない箇所をクリック)するとForeColorだけが元の色に戻ってしまいます。FontStyleはそのまま有効なのですが、これを回避する方法をご存じないでしょうか? 

     

    (現象が再現するコード)
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

            ListView1.HideSelection = False
            ListView1.FullRowSelect = True
            ListView1.GridLines = True
            ListView1.View = View.Details

            ListView1.Items(2).ForeColor = Color.Red
            ListView1.Items(2).Font = New Font(ListView1.Items(2).Font, FontStyle.Bold)

        End Sub

    2007年1月12日 13:04

回答

  • yho さん、こんにちは
    ダッチです。

    原因は ListView.HideSelection プロパティ  を False に設定しているからですね。

    ListView.HideSelection プロパティ  のドキュメントを参照していただけるとわかると思いますが、

     MSDN さんからの引用
    オペレーティング システムで指定された現在選択されている色とは異なる色で強調表示されたままになります。

    と記載されています。

    ForeColor だけでなく BackColor なども異なる色で表示されていると思います。

    回避策としては、ListView.HideSelection プロパティ  を True に設定することですね。
    または、オーナードローを行うことが出来れば回避できると思うのですが、サポートされているのが .NET Framework 2.0 からですから、難しいですね。

    2007年1月12日 13:48

すべての返信

  • yho さん、こんにちは
    ダッチです。

    原因は ListView.HideSelection プロパティ  を False に設定しているからですね。

    ListView.HideSelection プロパティ  のドキュメントを参照していただけるとわかると思いますが、

     MSDN さんからの引用
    オペレーティング システムで指定された現在選択されている色とは異なる色で強調表示されたままになります。

    と記載されています。

    ForeColor だけでなく BackColor なども異なる色で表示されていると思います。

    回避策としては、ListView.HideSelection プロパティ  を True に設定することですね。
    または、オーナードローを行うことが出来れば回避できると思うのですが、サポートされているのが .NET Framework 2.0 からですから、難しいですね。

    2007年1月12日 13:48
  • ご教授ありがとうございます。MSDNにも確かにそのように記述がありました。HideSelection プロパティをTrueにすることでうまく制御されることを確認しました。(BackColor プロパティ等も同様でした)

    本当にありがとうございました。

    2007年1月15日 1:01