2010-07-01 5 views
7

Les fichiers d'aide de Minitab fournissent une assistance sur ce sujet dans une certaine mesure, et tous les exemples sont dans VB. Je suis nouveau à .NET, mais je le prends assez rapidement. C'est quelque chose dans la syntaxe de la commande.Comment puis-je exécuter une commande Minitab via .NET?

Ils fournissent cet exemple en 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" 

et mon code ressemble à ceci en C#

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

ce que je me attends devrait arriver est Minitab devrait ouvrir, et la commande doit exécuter . Cependant, ce qui se passe est que deux instances de Minitab sont ouvertes et aucune ne montre l'interface utilisateur, je dois les trouver dans les processus.

+0

Il n'y a pas de "C# .NET". La langue est juste C#, et le Framework est juste .NET. –

Répondre

10

En supposant que vous avez ajouté la référence à Minitab COM, cela devrait vous aider à démarrer:

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; 

Utilisation des objets COM pour C# peut être difficile. Surtout avec les relâcher quand vous avez fini. Rappelez-vous, en règle générale, ne doublez jamais. Ne pas faire:

MtbApp.UserInterface.Visible = true; 

Au lieu de cela:

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

Ainsi, l'objet MtbUI peut être libéré plus tard.

+0

Comme le demandeur, et nouveau à stackoverflow, je ne peux apparemment pas upvote ou downvote, mais je l'avouerais si je pouvais, ça a fonctionné pour moi, merci. – xdumaine

+0

@roviuser, heureux que cela a fonctionné. Même en tant que nouvel utilisateur, je pense que vous pouvez toujours accepter la réponse (c'est la coche). – Mark

+0

C'est une introduction fantastique sur la façon de démarrer avec l'automatisation Minitab. –

Questions connexes