VB.NET(Visual Basic 2010)で質問です。ListViewで選択されている項目について、「フォームをアクティブにせず」選択を解除する方法について教えてください。

自フォームがアクティブでない状態でもそのまま自動で選択項目を変えられるようにしたいのですが、(ListViewの何か).SelectedIndices.Clear() とか (ListViewの何か).Items(i).Selected = False の場合、勝手に自フォームがアクティブになってしまうので困っています。
OSはWindows8.1です。よろしくお願い致します。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/07/31 18:12:41
  • 終了:2014/08/07 18:15:03

回答(1件)

id:mattn No.1

mattn回答回数104ベストアンサー獲得回数232014/08/04 19:17:18

ポイント300pt
Public Class Form1
    Private selectedIndex As Integer = 0
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        ListView1.SelectedItems.Clear()
        Me.selectedIndex += 1
        If Me.selectedIndex >= ListView1.Items.Count Then
            Me.selectedIndex = 0
        End If
        ListView1.Items(Me.selectedIndex).Selected = True
        ListView1.Items(Me.selectedIndex).Focused = False
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ListView1.HideSelection = False
        ListView1.Items.Clear()
        ListView1.Items.Add("foo1")
        ListView1.Items.Add("foo2")
        ListView1.Items.Add("foo3")

        Timer1.Interval = 1000
        Timer1.Start()
    End Sub
End Class

上記のコードで試しましたが、フォーム自身にフォーカスがあたる事はありませんでした。

他1件のコメントを見る
id:mattn

上記のプログラムを実行して他のウィンドウにフォーカスを当てたままにしていても、アプリケーションにフォーカスが戻ってくる事はありませんでした。
ですのでフォーカスを当ててしまう原因はプロセスを起動している部分(shell関数)だと思います。

2014/08/07 20:21:59
id:halohalolin

mattnさんご返答ありがとうございます。

私の場合、Shell関数そのままで、(ListViewの何か).SelectedIndices.Clear() とか (ListViewの何か).Items(i).Selected = Falseの部分を除去すると、私の意図通りShell関数にフォーカスが残ったまま戻らない動作をしてくれました。
ですので、ShellからForm1へ勝手にフォーカスを戻す問題の原因はListView関連だと考えています。

2014/08/07 22:01:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません