.Net-Workshop: CLR-Makros mit GUI-Elementen

Ein eigenes Menüsystem

Auf Basis dieser einfachen Operationen können Sie verhältnismäßig einfach kleine Menüs in Ihre Skripte einbauen. Eine Vorlage für ein solches Menü finden Sie im folgenden Beispiel.

Das Menü soll einfach eine Gruppe an Befehlen auflisten und dann nach der Nummer des gewünschten Befehls fragen. Die ausgewählte Nummer wird zurückgeliefert. Die Idee beim Menücode ist die, dass die Texte für die einzelnen Befehle einfach aus einem beliebigen Enum stammen können: Um ein anderes Menü anzuzeigen, müssen Sie also nur den Enum verändern. Die Funktion zur Anzeige des Menüs sieht wie folgt aus:

static T PromptUser<T>() {
string[] names = Enum.GetNames(typeof(T));
T[] values = (T[])Enum.GetValues(typeof(T));

for (int i = 0; i < names.Length - 1; i++) {
Console.WriteLine(i.ToString() + " - " + names[i]);
}

int result = -1;
while (result < 0 || result > names.Length - 1) {
Console.WriteLine("Bitte geben Sie die Nummer des Befehls ein:");
string line = Console.ReadLine();
int.TryParse(line, out result);
}
return values[result];
}

Es handelt sich also um eine generische Funktion mit dem Namen PromptUser<T>(), die als generischeren Parameter ein Enum erwartet. Die Namen der einzelnen Member werden jeweils mit einer vorgesetzten Nummer auf der Konsole ausgegeben: Das ist das Menü des Skriptes. Der letzte Wert des Enums („None“) wird nicht mit ausgegeben.