2016-01-08 47 views
0

VB.NET新手,但目前相當困難。應用程序在對話框後自動關閉

我的Windows窗體應用程序啓動「Form1的」,然後開始使用一個對話框:

Dim dialogResult As Boolean = configWizard.ShowDialog()

的ConfigWizard那麼一些數據寫入到註冊表中,用新的註冊表值彈出並在其關閉指向Form1加載的其餘部分。 這一切工作正常..從Visual Studio 2015年調試。

我面臨的問題是,當我使用內置的InstallShield構建此程序的安裝程序。安裝程序在安裝時設置註冊表值(完美工作),然後打開對話框,設置新值並彈出寫入的新值。這一切工作正常。但是,只要按下對話框上的「確定」,Form1就會立即關閉。 它應該彈出一個消息框,說'真',但整個程序關閉。

在程序不斷運行時,它確實出現了Form1在消失前確實閃爍了幾毫秒。看起來程序只是因爲一些未知的原因而關閉。我非常難以確定如何阻止Form1關閉。任何問題的幫助將是必不可少的。

我已經省略了一些irrelivent的代碼。 我設法迅速採取截圖的時候在Form1沒有閃爍起來(驗證兩者Form1並在MessageBox說「真」是對話框加載後是收..儘管只是一秒鐘)

代碼:

對話框: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

myValue1= Me.myValue1.Text 
    myValue2= Me.myValue2.Text 

    Dim regKey As RegistryKey 
    regKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\removedSoftware", True) 

    regKey.SetValue("value1", myValue1) 
    regKey.SetValue("value2", myValue2) 
    MsgBox(myValue1 & " + " & myValue2) 
    MsgBox("Registry: " & regKey.GetValue("value1") & " data: " & regKey.GetValue("value2")) 
    regKey.Close() 

    Me.Close() 
End Sub 

Form1中

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim dialogResult As Boolean = configWizard.ShowDialog() Try Catch ex As Exception MessageBox.Show(ex.ToString) End Try MsgBox(dialogResult) End Sub

+0

截圖位於:http://s8.postimg.org/tmyekgmet/flash1.png – MikeS

+0

開始將調用移動到ty/catch塊內的ShowDialog。這是一個64位應用程序嗎? – Steve

+0

感謝您的回覆;不,它是一個32位應用程序(TargetCPU是AnyCPU,但打勾時選擇32位,我需要它在32位和64位上運行)將showdialog添加到Try/Catch塊中並不會改變任何內容 – MikeS

回答

0

使用OnShown事件(Form1_Shown)而不是OnLoad顯示對話框。

+0

感謝您的回覆;我已經對其進行了更改,因此所有正在加載的數據都在Form1_Shown而不是OnLoad上觸發,但是,儘管Form1在對話框之前加載,是c丟失,它仍然關閉整個應用程序。 – MikeS