NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Jakub Dvorský:3.2.2016 9:21

Zdravím mohl by mi někdo poradit jak vypnout program který běží pomocí nějaké klávesy, Potřeboval bych aby program šel vypnout kdykoli v průběhu například klávesou 'A'. Děkuji.

 
Odpovědět
3.2.2016 9:21
Avatar
Odpovídá na Jakub Dvorský
Neaktivní uživatel:3.2.2016 9:38

U okenní aplikace použiješ event KeyDown --> tam zavoláš Application.Exit(); Ale konzole nemá žádné takové eventy, takže budeš muset udělat while nebo do-while loop. Do něj umístíš svůj program, a pokaždé, když budeš chtít něco zadávat, tak si to (ten znak, co zadáš) uložíš třeba takto: char exitChar = Console.ReadKe­y(true).KeyChar. Hned poté if(exitChar == 'A') return;

Nahoru Odpovědět
3.2.2016 9:38
Neaktivní uživatelský účet
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jakub Dvorský
vajkuba1234:3.2.2016 9:39

Stačí toto?

http://stackoverflow.com/questions/5891538/listen-for-key-press-in-net-console-app
Nahoru Odpovědět
3.2.2016 9:39
No hope, no future, JUST WAR!
Avatar
Jakub Dvorský:14.2.2016 18:48

Mám to přes konzoly, ale potřebuji aby se tu ukončilo jakmile zmáčknu to tlačítko. Když tam zadám Console.ReadLine(); tak se to po stisknutí toho tlačítka co to má vypnout se to nevypne a nevím jak to udělat aby se to vyplo.

Editováno 14.2.2016 18:48
 
Nahoru Odpovědět
14.2.2016 18:48
Avatar
Odpovídá na Jakub Dvorský
Neaktivní uživatel:14.2.2016 18:57

Aha jo, použij "return". return znamená ukončení metody, takže když se ukončí metoda "main", ukončí se program.

Nahoru Odpovědět
14.2.2016 18:57
Neaktivní uživatelský účet
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jakub Dvorský
vajkuba1234:14.2.2016 19:07

Pouzij Console.ReadKey();

Nahoru Odpovědět
14.2.2016 19:07
No hope, no future, JUST WAR!
Avatar
Jakub Dvorský:14.2.2016 20:14

Omlouvám se že jsem t špatně vysvětlil, dejme tomu že mám tenhle kód a potřebuji ho vypnout za běhu uplně ve kteroukoliv chvíli chci pomocí předem určeného tlačítka například 'a'

Console.WriteLine("Zadej číslo.");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("Zadej mocninu.");
            int b = int.Parse(Console.ReadLine());
            for(int i = 0;i  < b; i++)
            {
                a *= b;

            }
            Console.WriteLine("vásledek je {0}.", a);


            Console.ReadKey();
 
Nahoru Odpovědět
14.2.2016 20:14
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jakub Dvorský
vajkuba1234:14.2.2016 20:30

Co toto?

Console.WriteLine("Pro STOP zmackni ESC");
do {
    while (!Console.KeyAvailable) {
        // Udelej neco
   }
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
Nahoru Odpovědět
14.2.2016 20:30
No hope, no future, JUST WAR!
Avatar
Jakub Dvorský:14.2.2016 20:37

To už jsem zkoušel ale když mám zadat int b a zmáčknu Escape tak se to nevypne a to potřebuju právě vyřešit

 
Nahoru Odpovědět
14.2.2016 20:37
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jakub Dvorský
vajkuba1234:14.2.2016 21:03

Vedle těch dvou palců je tlačítko odpovědět...

Nahoru Odpovědět
14.2.2016 21:03
No hope, no future, JUST WAR!
Avatar
Odpovídá na Jakub Dvorský
Michael Škrášek:14.2.2016 23:04

Rozhodně to není nejelegantnější řešení, ale funguje, popřípadě si možná budeš muset přidat nějaký speciální znaky ... prostě místo Console.ReadLine() použiješ tuhle funkci ReadLine()

static ConsoleKey exit_key = ConsoleKey.Escape; //klavesa pro ukonceni programu
        static char[] special_keys = { ' ', '"', '(', ')', '[', ']', '{', '}', '_', '-', '+', '*', '/', '\\', '|', ',', '.', '#', '$', '@', (char)39 };

        static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("pro ukonceni aplikace stiknete ESC: ");
                string line = ReadLine();
                Console.WriteLine(line);
            }
        }

        static string ReadLine()
        {
            string ret = "\n";
            do
            {
                ConsoleKeyInfo k = Console.ReadKey();
                if (k.Key == exit_key)
                {
                    Environment.Exit(0);
                }
                else if (k.Key == ConsoleKey.Enter)
                {
                    break;
                }
                else if ((k.KeyChar >= 48 && k.KeyChar <= 57) || // 0 - 9
                        (k.KeyChar >= 65 && k.KeyChar <= 90) || // A - Z
                        (k.KeyChar >= 97 && k.KeyChar <= 122) || // a - z
                        (special_keys.Contains(k.KeyChar))) // specialni znaky
                {
                    ret += k.KeyChar;
                }
            } while (true);
            return ret;
        }
Editováno 14.2.2016 23:05
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
14.2.2016 23:04
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
Odpovídá na Michael Škrášek
Jakub Dvorský:15.2.2016 22:47

Moc ti děkuji :-)

 
Nahoru Odpovědět
15.2.2016 22:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.