トップ回答者
AxListViewについて

質問
-
はじめまして。ジープと申します。
開発環境は Windows XP Visual Basic.net Framework 1.1 です。
先日、VB6で作成したソフトをVB.netの変換ツールで変換したのですが、
ListViewがAxListViewというものに変換されていました。
基本がListViewクラスであったため、今まではなんとかやってきたのですが本日ついに行き詰ってしまいました。
AxListViewに、ItemClickというイベントがあるのですが、マウスカーソルをリストビューの上で少し停滞させただけでItemClickというイベントが飛んできてしまいます。(ListView上は選択状態になってしまう)
対応策を知っている方がおられましたら、ご教授願います…。
補足:AxListView は AxInterop.MSComctlLib を参照すると使えるようになりました。
回答
すべての返信
-
さっそくの返信ありがとうございます。
AxListView を使っているのは、1行に対して列ごとに文字の色を変更したかったからなのですが…。
VB.net のListViewで、列ごとに色を変更しようと思ったのですが、なぜかうまくいきませんでした。
あちこち検索してみたのですが、原因そのものがわからなかったので、AxListViewをそのままつかっていました…。
ちなみに、VB.net で列ごとの色を変更するプログラムは以下のように記述しました。
Sub Main
Dim l_strData(2) as String
l_strData(0) = "ああ”
l_strData(1) = "いい”
l_strData(2) = "うう”
ListView1.Items.Add(New ListViewItem(l_strData))
ListView1.Items(0).SubItem(1).ForeColor = System.Drawing.color.Red
End Sub
上記のプログラムであると、”いい”が赤く表示されるはずなのですが、黒いまま表示されてしまいます。
もしこちらのほうで解決策をご存知でしたら、ご回答よろしくお願いします。
-
ジープさん、こんにちは。
ジープ さんからの引用 AxListView を使っているのは、1行に対して列ごとに文字の色を変更したかったからなのですが…。 そういった事情があったことは、初めて知りました。
VB.net のListViewで、列ごとに色を変更しようと思ったのですが、なぜかうまくいきませんでした。 ListView1.Items(0).SubItem(1).ForeColor = System.Drawing.color.Red この方法では、行ごとの変更は可能ですが、SubItem ごとに変更することはできないです。
難しいですが、NM_CUSTOMDRAW を拾って自前で DrawString するしかないような気がします。
# どうも、.NET Framework 2.0 でも、ForeColor プロパティがある割に意味がないようで...
-
-
じゃんぬねっと さんからの引用 ジープさん、こんにちは。
ジープ さんからの引用 AxListView を使っているのは、1行に対して列ごとに文字の色を変更したかったからなのですが…。 そういった事情があったことは、初めて知りました。
VB.net のListViewで、列ごとに色を変更しようと思ったのですが、なぜかうまくいきませんでした。 ListView1.Items(0).SubItem(1).ForeColor = System.Drawing.color.Red この方法では、行ごとの変更は可能ですが、SubItem ごとに変更することはできないです。
難しいですが、NM_CUSTOMDRAW を拾って自前で DrawString するしかないような気がします。
# どうも、.NET Framework 2.0 でも、ForeColor プロパティがある割に意味がないようで...
いえ、1.0 のころから有効ですよ。
ただ、ListViewSubItem の親となる ListViewItem にサブアイテムごとのスタイルを無効にするプロパティがあって、それがデフォルトでは True になっているってだけです。
// サブアイテムごとの描画を行うとそれなりに描画パフォーマンスが悪化します。
-
Hongliangさん回答ありがとうございます。
指摘どおり、ListViewItem の UseItemStyleForSubItems の値をFalseにする分を
上のソースに追加したら、”いい”が赤字で表示されました。
今までListViewItemCllectionで見てたのがいけなかったんですね…完全に見落としていました。
ご指摘ありがとうございます。
パフォーマンスはどのくらい変わってくるのですかね…小規模アプリなので、多少遅くてもかまわないんですが…
少しテストケースつくって調べてみます。
このスレッドですが、とりあえず当初のItem_Clickが来る件に関しては
現在マイクロソフトのサポートに問い合わせ中ですので、
返答がきたときに結果を書いて、締結しようかと思います。
お二人とも本当にありがとうございました。