活动结束后打开.net窗体

时间:2015-09-21 08:01:10

标签: c# .net winforms compact-framework windows-mobile-6.5

我正在使用带有.Net CF的C#编写Windows Mobile CE应用程序。

考虑我的应用程序中有2个表单:

  1. 对象列表(具有列表视图)
  2. 详细信息页面(应在以前的列表视图中选择某些内容时显示)
  3. 目前我正在将回调附加到listview的SelectedIndexChanged事件,并在那里打开一个新表单。

    新表单打开正常(在事件回调的中间),但是当我关闭表单(this.Close())时,在第一次单击UI再次可交互之后,列表页面无法第一次点击

    此外,第一步点击的ListViewItem未被选中(蓝色背景)。

    这是一段显示此问题的短片(12秒):http://take.ms/urkme 正如您从视频中看到的那样,从详细信息屏幕返回后,刷新按钮不会点击第一次点击..

    我正在显示详细信息表单:

    private void listView_SelectedIndexChanged(object sender, EventArgs e)
    {
        (new FormDetails()).ShowDialog();
    }
    

    有什么方法可以在活动结束后显示详情表格,还是我完全错了?

    PS!使用Button和它的点击事件尝试相同,然后一切都很顺利..

3 个答案:

答案 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关闭(因为它是一个无模式对话框)。