DOBON.NET DOBON.NETプログラミング掲示板過去ログ

リストビューのSelectedImtemsの跡が残る件について

環境/言語:[XPSP3 VB.NET Framework4.0]
分類:[.NET]

2010/12/31(Fri) 13:54:53 編集(投稿者)

はじめまして。

XPSP3で、VB.NET2008で、リストビューを使っています。
リストビューに表示されている項目を上下移動させる事を目的としています。

それはできているのですが、SelectedItems(0)のSeletedをFalseにすると、
その行でハイライトされていた領域にグレーの枠が残ってしまいます。
仕様なのかもしれませんが、このグレー枠を表示させない方法をご存じ方はいらっしゃらないでしょうか。

行削除と行挿入で回避できるかもしれないと思ってやってみましたが、結果はおなじでした。

リストビューの項目を上に移動するコードは次のようにしています。
よろしくお願いします。
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim SelectStr As String
        Dim BeforeInd As Integer

        BeforeInd = ListView1.SelectedItems(0).Index
        If BeforeInd > 0 Then
            BeforeInd = BeforeInd - 1
            SelectStr = ListView1.SelectedItems(0).SubItems(1).Text
            ListView1.SelectedItems(0).SubItems(1).Text = ListView1.Items(BeforeInd).SubItems(1).Text
            ListView1.Items(BeforeInd).SubItems(1).Text = SelectStr
            ListView1.SelectedItems(0).Selected = False ←この部分が問題
            ListView1.Items(BeforeInd).Selected = True  ←上の行をハイライト
        End If
        ListView1.Focus()
End Sub
■No27926に返信(カバさんの記事)
> 仕様なのかもしれませんが、このグレー枠を表示させない方法をご存じ方はいらっしゃらないでしょうか。

グレーの枠はフォーカスがあることを示す枠線です。
お望みのことは ListView1.FocusedItem = ListView1.Items(BeforeInd) などと書くと実現できるかもしれません。
(フォーカスを BeforeInd が指し示すアイテムに移す)
■No27927に返信(Azuleanさんの記事)
> グレーの枠はフォーカスがあることを示す枠線です。
> お望みのことは ListView1.FocusedItem = ListView1.Items(BeforeInd) などと書くと実現できるかもしれません。
> (フォーカスを BeforeInd が指し示すアイテムに移す)

ありがとうございます。
おっしゃるとおりにしたら、実現できました。
うーん、VB.NETよくわかりません。っていうか、プロパティ多すぎです。
こんなプロパティがあったとは。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板