我在从列表框或数据网格返回所选项目时遇到问题。问题是,我特别希望用户双击所选项目,而不是控件上的其他任何地方(如 DoubleClick 事件)。目前我有这个:
private void listBox1_DoubleClick(object sender, EventArgs e)
{
if (listBox1.SelectedItem == null) return;
System.Console.WriteLine(listBox1.SelectedItem.ToString()); //console for testing
}
虽然它有效,但我不喜欢这样一个事实,即您可以单击一次项目,然后在控件的空白处双击任意位置,它会返回先前选择的项目。有什么简单的方法可以改变它吗?
您应该从发生双击事件的位置获取项目索引:
int index = listBox1.IndexFromPoint(e.Location);
if (index != System.Windows.Forms.ListBox.NoMatches)
{
System.Console.WriteLine(listBox1.SelectedItem.ToString()); //console for testing
}