Не можете подсчитать слова от richtextbox до метки?

Я не уверен, что здесь не так, но я пытаюсь подсчитать слова в поле с расширенным текстом и отобразить это с меткой.

Я помещаю richtextbox в элемент управления вкладками, чтобы получить текстовое поле с вкладками. Что, кажется, делает это намного сложнее, чем должно

также это не вся программа, я взял части, относящиеся к richtextbox и счетчику слов

Любая помощь приветствуется :)

    public RichTab()
    {
        InitializeComponent();
        TabPage tp = new TabPage("Document");
        RichTextBox rtb = new RichTextBox();
        rtb.Dock = DockStyle.Fill;
        tp.Controls.Add(rtb);
        tabControl1.TabPages.Add(tp);
        WordCount();
    }

    public RichTextBox RTTB()
    {
        RichTextBox rtb = null;
        TabPage tp = tabControl1.SelectedTab;
        if (tp != null)
        {
            rtb = tp.Controls[0] as RichTextBox;
        }
        return rtb;
    }

    private void WordCount()
    {
        MatchCollection wordColl = Regex.Matches(RTTB().Text, @"[\W]+");
        label2.Text = wordColl.Count.ToString();   
    }

person Kevin Cope    schedule 09.05.2012    source источник
comment
Вы уже добавили RTB на вкладку. Какое имя у этого RTB?   -  person Joshua Drake    schedule 09.05.2012


Ответы (2)


Я бы, вероятно, просто подключил событие TextChanged RichTextBox и посчитал там слова:

rtb.TextChanged += rtb_TextChanged;

Затем посчитайте слова (используя регулярное выражение Джорджио Минарди):

private void rtb_TextChanged(object sender, EventArgs e) {
  label2.Text = Regex.Matches(((RichTextBox)sender).Text, @"[\S]+").Count.ToString();
}
person LarsTech    schedule 09.05.2012

В чем проблема? Вот простая процедура для подсчета слов:

[Test]
public void CountWords()
{
    const string sample = "How you doing today ?";
    MatchCollection collection = Regex.Matches(sample, @"[\S]+");
    var numberOfWords = collection.Count;
    //numberOfWords is 5
    Assert.IsTrue(numberOfWords == 5);
}
person Giorgio Minardi    schedule 09.05.2012