FormアプリケーションにListView(MultiSelect=false)を追加して下記コードを実行して、SelectedIndexをマウスで変えた時に、クリックしたアイテムが一瞬選択状態になった後に選択が解除されてしまいます。
想定では普通にクリックしたアイテムが選択状態になると思ったのですが、原因は何でしょうか。
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10 11namespace WindowsFormsApp9 12{ 13 public partial class Form1 : Form 14 { 15 private int disableEventCounter = 0; 16 17 public Form1() 18 { 19 InitializeComponent(); 20 } 21 22 private void Form1_Load(object sender, EventArgs e) 23 { 24 func(); 25 } 26 27 private void func() 28 { 29 var selectedIndex = listView1.SelectedItems.Count > 0 ? listView1.SelectedIndices[0] : -1; 30 31 if (selectedIndex != -1) 32 disableEventCounter++; 33 listView1.Items.Clear(); 34 35 listView1.Items.Add("aaaaaaaaaaa"); 36 listView1.Items.Add("bbbbbbbbbbb"); 37 listView1.Items.Add("ccccccccccc"); 38 39 if (selectedIndex != -1) 40 { 41 disableEventCounter++; 42 listView1.SelectedIndices.Add(selectedIndex); 43 } 44 } 45 46 private void listView1_SelectedIndexChanged(object sender, EventArgs e) 47 { 48 Console.WriteLine("enter"); 49 if (disableEventCounter > 0) 50 { 51 disableEventCounter--; 52 return; 53 } 54 55 Console.WriteLine("pass"); 56 57 func(); 58 } 59 } 60} 61
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/06 02:16