private List <Card> FindMatch(string TextToSearch)
        {
            List <Card> matched_cards = new List <Card>();

            string[] card_paths = null;
            if (cmbCardGroups.SelectedIndex == 0)
            {
                card_paths = Globals.GetPathOfEachCard();
            }
            else
            {
                card_paths = Globals.GetPathOfEachCard(CardGroupPaths[cmbCardGroups.SelectedIndex - 1]);
            }

            var cards = Globals.GetListOfCards(card_paths);

            foreach (Card card in cards)
            {
                List <string> text_file_list = new List <string>();

                string[] question_text_files = Globals.GetListOfTextFiles(card.QuestionAbsPath);
                string[] answer_text_files   = Globals.GetListOfTextFiles(card.AnswerAbsPath);
                string[] reminder_text_files = Globals.GetListOfTextFiles(card.ReminderAbsPath);

                text_file_list.AddRange(question_text_files);
                text_file_list.AddRange(answer_text_files);
                text_file_list.AddRange(reminder_text_files);

                foreach (string file in text_file_list)
                {
                    string file_text = File.ReadAllText(file);
                    if (file_text.IndexOf(TextToSearch) >= 0)
                    {
                        matched_cards.Add(card);
                        break;
                    }
                }
            }
            return(matched_cards);
        }