2011-02-03 28 views
0


我不得不圍繞一個相當全面的樣子,也沒有找到任何有關,所以我決定在這裏問:)C#Application.ApplicationExit創建需要點擊「X」兩次

我創建一個Visual Studio中的WinForm,並且在它的代碼中它具有相當少的功能。此時它的所有工作都很好。然後,我把
Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
在構造函數中,當我去並點擊角落裏的小十字架時,我必須點擊它兩次才能關閉!我會把代碼放在這裏,但它的240行,所以它的巨大..如果你需要看到它,但我可以把它。

在此先感謝!
Dronnoc

+0

看起來像鼠標或鍵盤的問題。如果刪除ApplicationExit處理程序,你會看到同樣的行爲嗎?已解決的問題。 – hungryMind 2011-02-03 07:27:11

+1

您應該在發佈200多行代碼之前嘗試確定導致此行的原因。嘗試註釋行,直到它不再顯示此行爲。您可能還想尋找類似於e.cancel = true – 2011-02-03 07:28:37

回答

1

我已經解決了它的人!

我在頁面上有一個ListBox,並且一個函數在SelectedIndex改變時運行。當我關閉表單時,它傳遞了-1的SelectedIndex,然後第二次關閉。所以,爲了解決它,我只是簡單地驗證了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. 
     } 
    } 
} 
1

ApplicationExit事件在單擊十字架時自動調用。所以實際上沒有必要調用它。關閉時你想做什麼?
如果你想要點擊交叉和關機之間的一些操作,你必須調用FormClosing() event.