ListViewコントロールのイベントMouseDown
やイベントを処理し、このメソッドを使用してマウスアクションのターゲットを決定すると、どのアイテムがダブルクリックされたかがわかります。これは、アイテムがクリックされていないかどうかを判断するための良い手段でもあります(たとえば、部分的に塗りつぶされたリストの空の領域をクリックします。MouseDoubleClick
HitTest
次のコードは、シングルクリックが発生した場合はクリックされたアイテムをテキストボックスに表示し、ダブルクリックが発生した場合はダブルクリックされたアイテムの名前を示すメッセージボックスをポップアップします。
アイテムが入力されていないリストビューの領域でクリックまたはダブルクリックが発生した場合、テキストボックスまたはメッセージボックスがyopuにその事実を通知します。
これは些細な例であり、ニーズに応じて、少し混乱させる必要があります。
更新:リストの空の領域がクリックまたはダブルクリックされたときに、ListviewコントロールのSelectedItemsプロパティをクリアするコードを追加しました。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
listView1.MouseDown += new MouseEventHandler(listView1_MouseDown);
listView1.MouseDoubleClick += new MouseEventHandler(listView1_MouseDoubleClick);
this.Load += new EventHandler(Form1_Load);
}
void Form1_Load(object sender, EventArgs e)
{
this.SetupListview();
}
private void SetupListview()
{
ListView lv = this.listView1;
lv.View = View.List;
lv.Items.Add("John Lennon");
lv.Items.Add("Paul McCartney");
lv.Items.Add("George Harrison");
lv.Items.Add("Richard Starkey");
}
void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListViewHitTestInfo info = listView1.HitTest(e.X, e.Y);
ListViewItem item = info.Item;
if (item != null)
{
MessageBox.Show("The selected Item Name is: " + item.Text);
}
else
{
this.listView1.SelectedItems.Clear();
MessageBox.Show("No Item is selected");
}
}
void listView1_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo info = listView1.HitTest(e.X, e.Y);
ListViewItem item = info.Item;
if (item != null)
{
this.textBox1.Text = item.Text;
}
else
{
this.listView1.SelectedItems.Clear();
this.textBox1.Text = "No Item is Selected";
}
}
}