[.Net框架] *.Show()和*.Showdialog()的分別

可能有些朋友只知道*.Show()而不知道*.ShowDialog()就讓我這位新手「programmer」來為大家介紹一下。

簡單來說*.Show()*.ShowDialog()的分別是在性質上:

  • *.Show()是用在兩個沒有太大關係的視窗上,例如檔案總管中資料夾的右鍵選單中的「在新視窗開啟」所開啟的視窗,兩個視窗可以各自操作;
  • *.ShowDialog()則會令開啟新視窗的父視窗鎖定直至新視窗被關閉為止,例如選擇檔案的對話方塊,必須要等待選擇完成才可以操作原本的視窗。

使用心得

在我懂得使用*.ShowDialog()之前,我是須要使用三行代碼來達成和*.ShowDialog()一樣的功能,但缺少了*.ShowDialog()的閃動效果:

'MainForm.vb
Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button.Click
    NewForm.Show()
    Me.Enabled = False
End Sub

'NewForm.vb
Private Sub NewForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    MainForm.Enabled = True
End Sub

當然,在懂得使用*.ShowDialog()之後,我只須一行代碼就完成了:

'MainForm.vb
Private Sub SettingButton_Click(sender As Object, e As EventArgs) Handles SettingButton.Click
    NewForm.ShowDialog()
End Sub