private async void _listener_OnKeyPressed(object sender, INPUT e) { bool error = false; string message = ""; try { if (Keyboard.Modifiers == ModifierKeys.Control) { Key k = KeyInterop.KeyFromVirtualKey(e.ki.wVk); int virtualKey = KeyInterop.VirtualKeyFromKey(k); if (k == Key.N) { // Invio della clipboard del client ClientManager.NotifyClipboardAsynch(); } else if (k == Key.M) { // Richiesta della clipboard al server ClipboardTrasfer.SendUpdateRequest(); } else if (virtualKey >= (int)VirtualKeyCode.VK_1 && virtualKey <= (int)VirtualKeyCode.VK_9) // Switch { virtualKey -= (int)VirtualKeyCode.VK_0; if (virtualKey <= listIp.Count) { serverIP = IPAddress.Parse(listIp[virtualKey - 1].ipAddress); Connection.disconnectFromServer(); ConnectWindow c = new ConnectWindow(); c.Show(); } } else if (virtualKey == (int)VirtualKeyCode.VK_0) // Disconnect { MessageDialogResult result = await this.ShowMessageAsync("Exit", "Are you sure you want to disconnect?", MessageDialogStyle.AffirmativeAndNegative, WPFProperties.metroDialogSettings); if (result == MessageDialogResult.Affirmative) { if (disconnectButton.IsEnabled) { Connection.disconnectFromServer(); } } } else { ClientManager.NotifyInputAsynch(e); } } else { ClientManager.NotifyInputAsynch(e); } } catch (Exception ex) { error = true; message = ex.Message; } if (error) { MessageDialogResult result = await this.ShowMessageAsync("Error: " + message, "You are now disconnected from server", MessageDialogStyle.Affirmative, WPFProperties.metroDialogSettings); } }