2013-08-06 38 views
1

如果我的問題標題有點含糊,我很抱歉。我有下面的程序調用表單。超鏈接調用相同的形式,通過一個子。所有這些工作都很好,問題是如果我點擊一個鏈接然後點擊另一個鏈接,表單會打開兩次,這是應該發生的,因爲我將這個表單實例化爲New。在程序中重複使用相同的winform

我想要做的只是打開相同的窗體,以便如果用戶單擊鏈接,然後只有一個窗體打開不是幾個。

Private Sub dsbPositionBoard_FollowHyperlink(Target As Microsoft.Office.Interop.Excel.Hyperlink) Handles Me.FollowHyperlink 

    'This procedure runs when any of the hyperlinked cells in the position dashboard are clicked 
    'The hyperlinks open the frmDefinition on the assigned defintion. The procedure calls 
    'the function. 

    'The hyperlinked cells are assigned under the ThisWorkbook/Open event. 

    Dim definitionForm As New frmDefinitions 

    Select Case Target.TextToDisplay 

     Case "Exempt" 
      definitionForm.tmr_out.Enabled = True 
      sheetView.exemptDefinition() 

     Case "Employee Pay Distribution for Ranges", "Low Third", "Upper Third" 
      definitionForm.tmr_out.Enabled = True 
      sheetView.lowerThirdDefinition() 

     Case "Market Percentiles" 
      definitionForm.tmr_out.Enabled = True 
      sheetView.marketPercentileDefinition() 

     Case "Min", "Mid", "Max", "Salary Range to Mkt" 
      definitionForm.tmr_out.Enabled = True 
      sheetView.payGradeWidthDefintion() 

     Case "Total Cash Compensation Data" 
      definitionForm.tmr_out.Enabled = True 
      sheetView.totalCashCompDefition() 

     Case "Compa-Ratio" 
      definitionForm.tmr_out.Enabled = True 
      sheetView.compaRatioDefinition() 

    End Select 

End Sub 
+0

啊,來吧!直到現在我才意識到這一點!我確實給出了你之前關於你的問題的正確答案,你還沒有對它說過一句話。我明白你已經使用過它,因爲它恰恰與Excel有關(一個基本錯誤不允許你做任何事情)!你打算現在做同樣的事情嗎?因爲這將是我最後一次幫助你。不感激的人是我不喜歡的東西。 – varocarbas

+0

@varocarbas,你是絕對正確的,我的道歉。我忘了將你的回答標記爲答案,我在你回答的最後一個問題上使用了你的決議。 –

+0

好的,如果一切都是誤解,那麼沒問題。我傾向於直接說出事情,我希望你沒有發現我的語氣不夠。 – varocarbas

回答

1

有兩種選擇:要麼全局定義給定frmDefinitions變量和關閉/打開需要時;或者將它作爲參數傳遞給函數。

我想你的情況的最佳選擇(通過假設典型條件)是全局定義。下面我包括基於標準Form,你應該找不到任何問題,以適應您的具體frmDefinitions類小碼:

Public Class Form1 
    Dim definitionForm As New Form 

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 

     definitionForm.Close() 

     definitionForm = New Form 
     definitionForm.Show() 

    End Sub 
End Class 

正如你所看到的,當你點擊Button1,表單definitionForm被反覆使用(先前的實例已關閉,新的實例已創建並打開)。

相關問題