[C#] Konsole Auswahlmenü

03/25/2012 22:24 Siebenkeim#1
Hallo,
ich bin recht neu in C# habe mir mehrere Tuts angekugt (Klassen, Member überschreiben usw.) und wollte ein kleine Banksystem programmieren in der Konsole z.B Konto erstellen und abrufen Geld einzahlen etc.
Und ich wollte fragen wie ich in der Konsole ein Auswahlmenü hinbekommen, ich habe bis jetzt nur
1. Konto erstellen
2.Anmelden
Bitte Zahl eingeben:

Würde gerne das man mit den Pfeiltasten auswählen kann was man nehmen möchte, ist das überhaupt möglich?
Und noch eine kleine Frage nebenan wie kann ich z.B Kontoinhaber etc. in eine Extra Datei speichern? Damit es "gespeichert" wird.

Danke schonmal für eure Hilfe!
03/26/2012 08:35 Syc#2
Auswahlmenü:

Einfach ein Menü erstellen

Code:
1. Konto erstellen
2. Anmelden
...
und eine Variable, die angibt welcher Menüpunkt gewählt ist

Bei Druck auf Pfeiltaste nach oben verringert sich die Variable um 1
Bei Druck auf Pfeiltaste nach unten erhöht sich die Variable um 1
Bei Druck auf Enter schaust du dir an welchen Wert die Variable hat und machst dann das was als Menüpunkt angegeben ist.

Die Variable darf natürlich nie größer sein als die Anzahl der Menüpunkte.

Um einen Menüpunkt zu markieren, kannst du Console.Background verwenden.

Speichern:

Schau dir mal die Klasse Filestream an .. ich denke anfangs reicht es alles in ein normales Textdokument zu speichern.
03/26/2012 13:20 Siebenkeim#3
Danke dir werde das mal testen :D

Noch eine kleine Frage wie kann ich abfragen ob die Pfeiltasten gedrückt wurden?
03/26/2012 15:44 Syc#4
Quote:
Originally Posted by Siebenkeim View Post
Danke dir werde das mal testen :D

Noch eine kleine Frage wie kann ich abfragen ob die Pfeiltasten gedrückt wurden?
Code:
ConsoleKeyInfo k = Console.ReadKey();
Hiermit wird der Tastendruck abgefangen und in die Variable "k" gespeichert.

Code:
k.Key == ConsoleKey.UpArrow
Damit wird geprüft ob die Variable mit dem Namen "k" den Wert "Pfeiltaste nach oben" hat ... dies geht natürlich mit allen möglichen Tasten.
03/26/2012 18:44 Siebenkeim#5
EDIT: Nochmals aber ich krieg das irgendwie nicht hin kann vll. jemand bitte ein Beispiel posten?
03/26/2012 21:48 Syc#6
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "Banksystem";

            int Navigation = 1;
            bool Schleife = true;

            Console.BackgroundColor = ConsoleColor.Yellow;
            Console.WriteLine("1. Konto erstellen");
            Console.BackgroundColor = ConsoleColor.Black;
            Console.WriteLine("2. Anmelden");
            Console.WriteLine("3. Beenden");

            do
            {               

                ConsoleKeyInfo k = Console.ReadKey();

                if (k.Key == ConsoleKey.Enter)
                {
                    Console.Clear();

                    switch (Navigation)
                    {
                        case 1:
                            Console.WriteLine("Konto erstellen ...");
                            //Konto erstellen
                            break;

                        case 2:
                            Console.WriteLine("Anmelden ...");
                            //Anmeldevorgang
                            break;

                        case 3:
                            Environment.Exit(1);
                            break;
                    }

                    break;
                }

                if (k.Key == ConsoleKey.UpArrow)
                    if (Navigation != 1)
                        Navigation--;
                    else
                        Navigation = 3;

                if (k.Key == ConsoleKey.DownArrow)
                    if (Navigation != 3)
                        Navigation++;
                    else
                        Navigation = 1;

                if (Navigation == 1)
                {
                    Console.Clear();
                    Console.BackgroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("1. Konto erstellen");
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.WriteLine("2. Anmelden");
                    Console.WriteLine("3. Beenden");
                }
                else if (Navigation == 2)
                {
                    Console.Clear();
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.WriteLine("1. Konto erstellen");
                    Console.BackgroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("2. Anmelden");
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.WriteLine("3. Beenden");
                }
                else if (Navigation == 3)
                {
                    Console.Clear();
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.WriteLine("1. Konto erstellen");
                    Console.WriteLine("2. Anmelden");
                    Console.BackgroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("3. Beenden");
                    Console.BackgroundColor = ConsoleColor.Black;
                }
            } while (Schleife == true);

            Console.ReadLine();

        }
    }
}
geht bestimmt auch kürzer ;)

am besten selber versuchen und nicht C&P
03/26/2012 22:21 Siebenkeim#7
Danke dir hab es ein bisschen für mich verständlich gemacht :D

Code:
Console.WriteLine("Nummer 1 <");
            Console.WriteLine("Nummer 2");
            SelectStart:
            ConsoleKeyInfo selectArrow = Console.ReadKey();
            if (selectArrow.Key == ConsoleKey.UpArrow)
            {
                Console.Clear();
                Console.WriteLine("Nummer 1 <");
                Console.WriteLine("Nummer 2");
                systemCounter--;
                if (systemCounter < 1)
                {
                    systemCounter = 1;
                }
                goto SelectStart;
            }
            else if (selectArrow.Key == ConsoleKey.DownArrow)
            {
                Console.Clear();
                Console.WriteLine("Nummer 1");
                Console.WriteLine("Nummer 2 <");
                systemCounter++;
                if (systemCounter > 2)
                {
                    systemCounter = 2;
                }
                goto SelectStart;
            }
            else if (selectArrow.Key == ConsoleKey.Enter)
            {
                Console.Clear();
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("systemCounter hat: " +       systemCounter.ToString(); 
                Console.ReadLine();
                //Continue
            }
03/29/2012 23:42 vwap#8
Du willst nicht ernsthaft goto verwenden, oder?