private SentenceMistake findSentence(Mistakes mistake, string text)
        {
            SentenceMistake sentenceMistake = new SentenceMistake();

            char[] cAll     = text.ToCharArray();
            char[] splitter = { '.', '!', '?' };
            int    count    = cAll.Length;
            bool   gefunden = false;

            sentenceMistake.Satzbeginn = 0;

            for (int i = 0; i < count; i++)
            {
                if (i > mistake.Start)
                {
                    gefunden = true;
                }
                if (splitter.Contains(cAll[i]))
                {
                    if (gefunden)
                    {
                        sentenceMistake.Satz += cAll[i];
                        break;
                    }
                    else
                    {
                        sentenceMistake.Satz       = "";
                        sentenceMistake.Satzbeginn = i + 1;
                    }
                }
                else
                {
                    sentenceMistake.Satz += cAll[i];
                }
            }
            return(sentenceMistake);
        }
        private void loadMistake(int id)
        {
            btnBack.Enabled       = false;
            btnNext.Enabled       = false;
            btnReplaceAll.Enabled = false;

            bool            gefunden = false;
            string          sMistake = "", sSentence = "", sHeadline = "";
            int             nMistakeCount = 0, nMistakePlace = 0;
            SentenceMistake sentenceMistake = new SentenceMistake();

            foreach (HunspellTexte text in lstTexte)
            {
                foreach (Mistakes fehler in text.Fehler)
                {
                    if (fehler.ID == id)
                    {
                        sMistake        = findWord(fehler, text.Text);
                        sentenceMistake = findSentence(fehler, text.Text);
                        sSentence       = sentenceMistake.Satz;
                        nMistakePlace   = fehler.Start - sentenceMistake.Satzbeginn;
                        sHeadline       = text.Name;
                        gefunden        = true;
                        break;
                    }
                }
                if (gefunden)
                {
                    break;
                }
            }

            var mCount = from fehler in lstFehler
                         where fehler == sMistake
                         select fehler;

            nMistakeCount = mCount.Count();

            fillDataGrid(sMistake);

            if (id > 0)
            {
                btnBack.Enabled = true;
            }
            if (id < MistakesCounter - 1)
            {
                btnNext.Enabled = true;
            }
            if (nMistakeCount > 1)
            {
                btnReplaceAll.Enabled = true;
            }

            lblName.Text         = sHeadline;
            lblMistake.Text      = sMistake;
            lblMistakeCount.Text = nMistakeCount.ToString();
            lblNumber.Text       = Convert.ToString(id + 1) + "/" + MistakesCounter.ToString();

            rtbSentence.Text = "";
            string sSentenceStart = sSentence.Substring(0, nMistakePlace);
            string sSentenceEnd   = sSentence.Substring(nMistakePlace + sMistake.Length, sSentence.Length - (nMistakePlace + sMistake.Length));
            Color  specialColor   = Color.Red;

            if (lstCorrectedMistakes.Contains(id))
            {
                specialColor = Color.Green;
            }
            appendText(rtbSentence, sSentenceStart, Color.Black);
            appendText(rtbSentence, sMistake, specialColor);
            appendText(rtbSentence, sSentenceEnd, Color.Black);
        }