我正在使用带有.Net CF的C#编写Windows Mobile CE应用程序。
考虑我的应用程序中有2个表单:
目前我正在将回调附加到listview的SelectedIndexChanged
事件,并在那里打开一个新表单。
新表单打开正常(在事件回调的中间),但是当我关闭表单(this.Close()
)时,在第一次单击UI再次可交互之后,列表页面无法第一次点击
此外,第一步点击的ListViewItem
未被选中(蓝色背景)。
这是一段显示此问题的短片(12秒):http://take.ms/urkme 正如您从视频中看到的那样,从详细信息屏幕返回后,刷新按钮不会点击第一次点击..
我正在显示详细信息表单:
private void listView_SelectedIndexChanged(object sender, EventArgs e)
{
(new FormDetails()).ShowDialog();
}
有什么方法可以在活动结束后显示详情表格,还是我完全错了?
PS!使用Button和它的点击事件尝试相同,然后一切都很顺利..
答案 0 :(得分:1)
据我所知,ListView
的{{1}}事件在几乎不会像SelectedIndexChanged
的{{1}}事件中被解雇过两次,这可能导致奇怪的互动。也许请尝试按照here中的建议更改为Button
事件。
答案 1 :(得分:0)
您的问题是由使用SelectedIndexChanged
事件引起的。当您在列表中选择一个项目时,您将设置SelectedIndex
,如果您再次选择相同的项目,则索引将无法更改,因此您永远不会调用该事件。
您可以使用Click
事件来触发想要的响应。
以下是一个例子:
private void listView1_Click(object sender, EventArgs e)
{
var firstSelectedItem = listView1.SelectedItems[0]; //This is your selected item.
//do stuff
}
答案 2 :(得分:0)
使用ShowDialog()时,以模态模式打开表单。在模式窗体关闭或返回DialogResult之前,不会进行以下代码的所有进一步处理。 使用.Show()更好地使用无模式表单。
private void listView_SelectedIndexChanged(object sender, EventArgs e)
{
(new FormDetails()).Show(); //will not stop processing of events in mainForm
}
如果完成了新的FormDetails,它可以使用简单的Hide或Close将主窗体调出到前台。 请记住,主窗体仍然存在,不会等待FormDetails关闭(因为它是一个无模式对话框)。