问题:鼠标点击Listbox所在项位置时第一次点击无反应(点击事件为Listbox的click事件,但是click事件是触发的,Listbox的SelectIndex却不变),第二次点击才能选择上正确项。布局:表格为封装过的FarPoint,槐米等药品所在控件为封装过的ListBox。
注意:不是纯winfrom窗体,外层是WPF窗体,利用WindowsFormsHost嵌套winfrom用户控件。FarPoint在winfrom用户控件里。
private void ListBox_Click(object sender, EventArgs e)
{
//this.Focus();
if (SelectItem != null) {
// MessageBox.Show("ListBox_Click" + SelectItem.ToString());
this.Focus();//后加,但无作用
SelectItem(Keys.Enter);
}
}
我怀疑是两种框架渲染时渲染机制不同所以导致鼠标焦点的问题
但在Click事件里手动加 this.Focus();
第一次点击项时就选对
或者说什么情况下会导致 listbox 触发click事件但鼠标位置所在项没被选中?
你通过SelectedIndex属性去判断数据项是否选中的吗?首先比较一下各层封装的属性之间是否含义一致,例如最底层都调用的Windows.Form.ListBox,这里面的SelectedIndex是否改变,经过FarPoint或其他层封装后,暴露出来的类似属性是否改变。可能这两个类似属性在不同时机下赋值的。
实在找不到原因可以考虑反编译一下代码,看最顶层是怎么逐层调用的。
Listbox第一次点击无反应,你需要查看一下SelectChanged事件。如果selectIndex没有发生变化,点了当然没有反应了。