2010-09-01 139 views
0

我正在爲Rhino開發一個插件,當我運行啓動插件的命令時,我執行以下操作。它創建一個飛濺形式,其上有一個定時器,2秒後我加載另一個表單。如何檢查表單的實例是否已經存在?

如果我錯誤地再次單擊插件圖標,它會創建另一個spash窗體的實例,它將再次加載插件。

我該如何預防?

這是製作窗體的代碼。

public override IRhinoCommand.result RunCommand(IRhinoCommandContext context) 
      { 

       Splash Splash = new Splash(); 
       Splash.Show(); 

       return IRhinoCommand.result.success; 
      } 

回答

4
public override IRhinoCommand.result RunCommand(IRhinoCommandContext context) 
{ 
    if (!Application.OpenForms.OfType<Splash>().Any()) 
    { 
     new Thread(() => Application.Run(new Splash())).Start(); 
    } 
    return IRhinoCommand.result.success; 
} 
+0

當我嘗試使用它通過System.Windows.Forms的它無法找到OfType財產,我如何使用它? – Bildsoe 2010-09-01 13:37:17

+0

@Bildsoe:如果您使用的是.NET 3.5或更高版本,請確保在文件頂部有'System.Core'引用和'using System.Linq;'指令。如果你不是,循環「Application.OpenForms」並檢查是否有任何窗體是'Splash'對象。 – Ani 2010-09-01 13:49:49

+0

當它作爲一個線程運行時,我該如何做Splash.show? – Bildsoe 2010-09-01 14:00:42

相關問題