功能很简单,双击Item,将Item的值传TextBox;本来认为很基础很简单的问题,只要在控件的DoubleClick中判断一下就可以了,却没曾想没那么容易,遇到个棘手的问题。网上搜索相关资料,发现这个问题很多人都遇到过,不过解决方案都不怎么好。除了了那引自JS的解决方法还是针对Web的,我想在WinForm下解决,各位看看有什么好方法。
起初加上if (ListBox1.Items.Count == 0) return;这一句,则在ListBox1的Item为空的时候返回,可在不为空的时候,点击空白处还是会出现问题。于是又判断SelectedIndex,为-1返回,可这么做还是有个问题,在未选中的时候一切正常,但在有选中的Item的时候问题又出现了,我双击空白处,可它把选中的那个Item的值传给TextBox了。
在论坛里还看到一位仁兄是通过将剩下的Item填充为空,然后判断为空返回,但总感觉不是根本解决之道,特寻求各位高手帮助!
起初加上if (ListBox1.Items.Count == 0) return;这一句,则在ListBox1的Item为空的时候返回,可在不为空的时候,点击空白处还是会出现问题。于是又判断SelectedIndex,为-1返回,可这么做还是有个问题,在未选中的时候一切正常,但在有选中的Item的时候问题又出现了,我双击空白处,可它把选中的那个Item的值传给TextBox了。
在论坛里还看到一位仁兄是通过将剩下的Item填充为空,然后判断为空返回,但总感觉不是根本解决之道,特寻求各位高手帮助!
{
public Form5()
{
InitializeComponent();
} private void Form5_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("aa");
dt.Columns.Add("bb");
for (int i = 0; i < 10; i++)
{
dt.Rows.Add("aa" + i, "bb" + i);
}
dt.AcceptChanges();
this.listBox1.DisplayMember = "bb";
this.listBox1.DataSource = dt;
this.listBox1.Height = 200;
this.listBox1.MouseDoubleClick += new MouseEventHandler(listBox1_MouseDoubleClick);
} void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
int index = this.listBox1.IndexFromPoint(e.Location);
if (index != System.Windows.Forms.ListBox.NoMatches)
{
MessageBox.Show(index.ToString());
//do your stuff here
}
}
}