2010-07-01 157 views
7

Minitab幫助文件在一定程度上爲此主題提供支持,所有示例都在VB中。我是.NET新手,但我很快就採用它。它在命令的語法中。如何通過.NET執行Minitab命令?

他們在VB中提供這個例子:

Dim MtbApp As New mtb.Application 
Dim MtbProj As mtb.Project 
Dim MtbCom As mtb.Command 
Dim i, j As Integer 

MtbApp.UserInterface.Visible = True 
Set MtbProj = MtbApp.ActiveProject 
MtbProj.ExecuteCommand "RANDOM 30 C1 - C2" 
MtbProj.ExecuteCommand "REGRESS C1 1 C2" 

和我的代碼看起來像這樣在C#

var MtbApp = new Mtb.Application(); 
var MtbProj = new Mtb.Project(); 
MtbProj = MtbApp.ActiveProject; 
MtbApp.UserInterface.Visible = true; 
MtbProj.ExecuteCommand(<command>); 

什麼,我期待應該發生在Minitab中應打開,命令應該執行。然而,最近發生的事情是Minitab的兩個實例正在打開,而且都沒有顯示用戶界面,我必須在進程中找到它們。

+0

沒有「C#.NET」這樣的東西。該語言只是C#,而框架就是.NET。 – 2010-07-01 19:25:33

回答

10

假設你已經添加了參考Minitab的COM,這應該讓你開始:

Mtb.Application MtbApp = null; 
Mtb.Project MtbProj = null; 
Mtb.UserInterface MtbUI = null; 

MtbApp = new Mtb.Application(); 
MtbProj = MtbApp.ActiveProject; 
MtbUI = MtbApp.UserInterface; 

MtbUI.Visible = true; 
MtbProj.ExecuteCommand("RANDOM 30 C1-C2", Type.Missing); //with C# optional params required 
MtbApp.Quit(); 

Marshal.ReleaseComObject(MtbUI); MtbUI = null; 
Marshal.ReleaseComObject(MtbProj); MtbProj = null; 
Marshal.ReleaseComObject(MtbApp); MtbApp = null; 

使用C#的COM對象可能會非常棘手。特別是在你完成時釋放它們。

請記住,一般來說不要加倍。不要做:

MtbApp.UserInterface.Visible = true; 

相反:

Mtb.UserInterface MtbUI = null; 
MtbUI = MtbApp.UserInterface; 
MtbUI.Visible = true; 

因此,MtbUI對象可以在以後釋放。

+0

作爲提問者,並且是新的stackoverflow,我顯然不能upvote或downvote,但我會upvote它,如果我可以,它爲我工作,謝謝。 – xdumaine 2010-07-07 15:00:19

+0

@roviuser,很高興它的工作。即使作爲新用戶,我認爲你仍然可以接受答案(這是複選標記)。 – Mark 2010-07-07 15:21:02

+0

這是關於如何開始使用Minitab自動化的精彩介紹。 – 2017-10-04 09:35:01