private void RegisterControlsEvents() { passTextBox.TextChanged += (sender, args) => capsLockAlertLabel.Text = IsKeyLocked(Keys.CapsLock) ? "The Caps Lock Key is ON!" : string.Empty; messagesListView.Click += (sender, args) => { int selectedIndex = ((ListView)sender).SelectedItems[0].Index; MessageDTO dto = _messageDTOs[selectedIndex]; pop3FromTextBox.Text = dto.FromEmail; pop3SenderFullNameTextBox.Text = dto.SenderInfoFullName; pop3SubjectTextBox.Text = dto.Subject; pop3BodyRichTextBox.Text = dto.BodyPlainText; }; deleteEmailButton.Click += (sender, args) => { Task.Run(() => { var mailAgentClient = new EmailClient(pop3LoginTextBox.Text, pop3PassTextBox.Text); string messageUID = default(string); if (messagesListView.InvokeRequired) { messagesListView.Invoke((MethodInvoker)(() => { if (messagesListView.Items.Count == 0) { return; } messageUID = messagesListView .Items[messagesListView.SelectedIndices[0]] .SubItems[2] .Text; })); } else { if (messagesListView.Items.Count == 0) { return; } messageUID = messagesListView .Items[messagesListView.SelectedIndices[0]] .SubItems[2] .Text; } mailAgentClient.DeleteMessageById(messageUID); if (messagesListView.Items.Count > 0) { messagesListView.Items.RemoveAt(messagesListView.SelectedIndices[0]); } }); }; attachImageButton.Click += (sender, args) => { using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.Filter = Resources.ImageExtensionsFilter; _imagePath = openFileDialog.ShowDialog() == DialogResult.OK ? openFileDialog.FileName : string.Empty; } }; sendButton.Click += (sender, args) => { MessageDomainModel messageModel = new MessageDomainModel { FromEmail = fromTextBox.Text, ToEmail = toTextBox.Text, Subject = subjectTextBox.Text, BodyHtmlText = containsHtmlCheckBox.Checked ? bodyRichTextBox.Text : string.Empty, BodyPlainText = containsHtmlCheckBox.Checked ? Uglify.HtmlToText(bodyRichTextBox.Text).Code : bodyRichTextBox.Text, SenderInfoFullName = senderFullNameTextBox.Text, RecipientInfoFullName = recipientFullNameTextBox.Text, ImagePath = _imagePath }; _imagePath = default(string); var mailAgentClient = new EmailClient(loginTextBox.Text, passTextBox.Text); try { Task.Run(() => mailAgentClient.Send(messageModel)); } catch (Exception e) { Debug.WriteLine(e); MessageBox.Show("Some errors occurred while sending your message. Sorry about that."); } }; authenticationButton.Click += (sender, args) => { Task.Run(() => { var mailAgentClient = new EmailClient(pop3LoginTextBox.Text, pop3PassTextBox.Text); _messageDTOs = mailAgentClient.GetAllMessages(); if (messagesListView.InvokeRequired) { messagesListView.Invoke((MethodInvoker)(() => { messagesListView.BeginUpdate(); messagesListView.Items.Clear(); for (int i = 0; i < _messageDTOs.Count; i++) { var item = new ListViewItem($"{i + 1}"); item.SubItems.Add(_messageDTOs[i].Subject); item.SubItems.Add(_messageDTOs[i].Id); messagesListView.Items.Add(item); } messagesListView.EndUpdate(); })); } else { messagesListView.BeginUpdate(); messagesListView.Items.Clear(); for (int i = 0; i < _messageDTOs.Count; i++) { var item = new ListViewItem($"{i + 1}"); item.SubItems.Add(_messageDTOs[i].Subject); item.SubItems.Add(_messageDTOs[i].Id); messagesListView.Items.Add(item); } messagesListView.EndUpdate(); } }); }; viewAttachmentButton.Click += (sender, args) => { Task.Run(() => { var mailAgentClient = new EmailClient(pop3LoginTextBox.Text, pop3PassTextBox.Text); int selectedIndex = default(int); string messageUID = default(string); if (messagesListView.InvokeRequired) { messagesListView.Invoke((MethodInvoker)(() => { selectedIndex = messagesListView.SelectedItems[0].Index; messageUID = messagesListView .Items[selectedIndex] .SubItems[2] .Text; })); } else { selectedIndex = messagesListView.SelectedItems[0].Index; messageUID = messagesListView .Items[selectedIndex] .SubItems[2] .Text; } try { string imagePath = mailAgentClient.GetImageAttachmentByMessageUID(messageUID); Process.Start(imagePath); } catch (Exception) { MessageBox.Show("There is no attachment"); } }); }; }