C#Application.ApplicationExit需要单击';X';两次
C#Application.ApplicationExit需要单击';X';两次,c#,winforms,debugging,C#,Winforms,Debugging,我对周围进行了相当彻底的调查,但找不到任何相关信息,因此我决定在这里提问:) 我在VisualStudio中创建了一个WinForm,它的代码中有相当多的函数。在这一点上,一切都很顺利。然后我去放 Application.ApplicationExit+=新事件处理程序(Application\u ApplicationExit) 在构造函数中,当我点击角落里的小十字时,我必须点击它两次,它才能关闭!我想把代码放在这里,但它有240行,所以它有点大。。如果你需要看的话,我可以把它挂起来 提前谢谢
我对周围进行了相当彻底的调查,但找不到任何相关信息,因此我决定在这里提问:) 我在VisualStudio中创建了一个WinForm,它的代码中有相当多的函数。在这一点上,一切都很顺利。然后我去放
Application.ApplicationExit+=新事件处理程序(Application\u ApplicationExit)代码>
在构造函数中,当我点击角落里的小十字时,我必须点击它两次,它才能关闭!我想把代码放在这里,但它有240行,所以它有点大。。如果你需要看的话,我可以把它挂起来
提前谢谢
dronoc单击十字会自动调用ApplicationExit事件。所以实际上没有必要打电话给它。结账时您想做什么?
如果你想在点击十字键和关机之间进行一些操作,你必须调用我已经解决了
我在页面上有一个列表框,当SelectedIndex更改时,一个函数正在运行。当我关闭表单时,它传递了一个SelectedIndex-1,然后第二次关闭。因此,为了修复它,我只需在ListBox函数中对值进行一些简单的验证
例如:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
}
void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}
变成
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
}
void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if(listBox1.SelectedIndex == -1)
{
Application.Exit();
}
//Rest of the code goes here.
}
}
}
看起来像是鼠标或键盘问题。如果删除ApplicationExit处理程序,是否会看到相同的行为?在发布200多行代码之前,您可能应该尝试找出导致此问题的原因。尝试注释行,直到它不再显示此行为。您可能还需要查找类似e.cancel的内容=true@HungryMind:我可以有把握地说,这不是键盘或鼠标的问题,如果我创建或删除该行,它会很好地工作,但我需要在应用程序关闭/关闭时运行一些代码。@Conrad Fix:我正在经历这个过程,完成后应报告。应给FormClosing()
事件一个镜头,将报告任何结果。这也失败了,现在应尝试康拉德·菲克斯在原始帖子评论中的建议。