private void listVoices_ItemChecked(object sender, ItemCheckedEventArgs e)
        {
            //QuestToSpeech.Voice s = Array.Find(tmpSelectedList.ToArray(), delegate (QuestToSpeech.Voice tv) { return (tv.Gender == v.Gender && tv.Name == v.Name && tv.LangCode == v.LangCode && tv.Module == v.Module); });

            if (drawn)
            {
                QuestToSpeech.Voice voice = new QuestToSpeech.Voice()
                {
                    Name     = e.Item.SubItems[0].Text,
                    Gender   = e.Item.SubItems[1].Text == "Female" ? QuestToSpeech.Gender.Female : QuestToSpeech.Gender.Male,
                    LangCode = e.Item.SubItems[3].Text,
                    Module   = QuestToSpeech.GetModule(e.Item.SubItems[2].Text)
                };

                if (e.Item.Checked)
                {
                    if (!tmpSelectedList.Exists(vx => QuestToSpeech.IsVoice(vx, voice)))
                    {
                        tmpSelectedList.Add(voice);
                    }
                }
                else
                {
                    if (tmpSelectedList.Exists(vx => QuestToSpeech.IsVoice(vx, voice)))
                    {
                        tmpSelectedList.Remove(tmpSelectedList.Find(vx => QuestToSpeech.IsVoice(vx, voice)));
                    }
                }
            }

            lblNumTotalSelected.Text = string.Format("(Total selected {0})", tmpSelectedList.Count);
        }
        private void comboLangCodes_SelectedIndexChanged(object sender, EventArgs e)
        {
            drawn = false;

            listVoices.Items.Clear();

            string langCode = comboLangCodes.SelectedItem.ToString();

            //QuestToSpeech.Voice x = (QuestToSpeech.Voice)Array.Find(tmpSelectedList.ToArray(), delegate (QuestToSpeech.Voice v) { return v.LangCode == langCode; }); //if (x != null)

            foreach (QuestToSpeech.Voice v in voices)               // insert voices by selected lang code
            {
                if (v.LangCode == langCode)
                {
                    listVoices.Items.Add(v.Name).SubItems.AddRange(new string[] { v.Gender.ToString(), v.Module.ToString(), v.LangCode });

                    if (tmpSelectedList.Exists(v1 => QuestToSpeech.IsVoice(v1, v)))
                    {
                        listVoices.Items[listVoices.Items.Count - 1].Checked = true;
                    }
                }
            }

            drawn = true;
        }