前提・実現したいこと
C# WindowsFormsで開発をしています。
TreeViewコントロールとListViewコントロールが1個ずつ設置してあるフォームがありTreeViewのNodeを選択したら、ListViewにフォーカスを変更してListViewItemの1項目を選択状態にしたいです。
※TreeViewのノード数とListViewのItemの数は同一とします
発生している問題・エラーメッセージ
TreeViewのAfterSelectイベントでListViewの特定項目を選択するようにコードを記述しましたが、ListViewの選択項目は変更されるものの、ListViewにフォーカスが当たりません。
※ListViewのなにもないところをクリックしたままにすると、フォーカスを当ててどの項目が選択されているのかを確認できました。
該当のソースコード
C#
1// TreeViewの変数をtreeView1 2// ListViewの変数をlistView1 3// としています 4private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 5{ 6 // 一行だけ選択したいので一度全ての選択状態をクリアする 7 listView1.SelectedIndices.Clear(); 8 9 if (e.Node.Index < listView1.Items.Count) 10 { 11 listView1.Items[e.Node.Index].Selected = true; 12 listView1.Focus(); 13 } 14} 15
試したこと
これがTreeviewコントロールのAfterSelectイベントではなく、ListViewコントロールやListBoxコントロールのSelectedIndexChangedイベントであれば、想定通りの動作となります。
TreeviewのNodeMouseClickイベントを試しましたが、挙動は同じでした。
また、Clickイベントも試しましたが、SelectedNodeが変更される前のイベントなので想定どおりにはなりませんでした。
補足情報(FW/ツールのバージョンなど)
- .NetFrameworkバージョン 4.5
- VisualStudio 2013 Professional
- プロジェクトはWindowsフォームアプリケーションで作成したものです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/23 06:04 編集