Diskuze: C# vypnutí programu pomocí klávesy
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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.ReadKey(true).KeyChar. Hned poté if(exitChar == 'A') return;
Stačí toto?
http://stackoverflow.com/questions/5891538/listen-for-key-press-in-net-console-app
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.
Aha jo, použij "return". return znamená ukončení metody, takže když se ukončí metoda "main", ukončí se program.
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();
Co toto?
Console.WriteLine("Pro STOP zmackni ESC");
do {
while (!Console.KeyAvailable) {
// Udelej neco
}
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
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
Vedle těch dvou palců je tlačítko odpovědět...
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;
}
Zobrazeno 12 zpráv z 12.