public Tuple <string, int> GetValidKeyResponse(List <string> validKeys) { // same as above, but only keys from the validKeys list will be accepted // program will not proceed until a correct key is pressed so make sure the user knows what to do if (validKeys.Count == 0) { return(null); } parentPage.Movable = false; var watch = System.Diagnostics.Stopwatch.StartNew(); CurrentKey = ""; bool stillTesting = true; while (stillTesting) { Wait(100); if (CurrentKey.Length == 2 && CurrentKey[0] == 'D') { CurrentKey = CurrentKey.Remove(0, 1); } foreach (string vk in validKeys) { if (CurrentKey == vk) { stillTesting = false; break; } } } watch.Stop(); parentPage.Movable = true; return(new Tuple <string, int>(CurrentKey, (int)watch.ElapsedMilliseconds)); }
/*************************** KEYBOARD ***************************/ public Tuple <string, int> GetKeyResponse() { // usage: GetKeyResponse().Item1 will return the capital letter corresponding to the next key pressed by the user // GetKeyResponse().Item2 will return time before getting the response (in milliseconds) // do not use for keys other than A-Z or 0-9 (unless you know their windows codes) parentPage.Movable = false; var watch = System.Diagnostics.Stopwatch.StartNew(); CurrentKey = ""; while (CurrentKey == "") { Wait(100); } watch.Stop(); if (CurrentKey.Length == 2 && CurrentKey[0] == 'D') { CurrentKey = CurrentKey.Remove(0, 1); // remove windows code for digits } parentPage.Movable = true; return(new Tuple <string, int>(CurrentKey, (int)watch.ElapsedMilliseconds)); }