无法计算从richtextbox到标签的单词?

时间:2012-05-09 16:22:49

标签: c# textbox richtextbox word-count

我不确定这里有什么问题,但我正在尝试在富文本框中计算单词,并用标签显示。

我在一个标签控件中放了一个richtextbox,这样我就可以有一个标签式文本框。这似乎使它变得更加困难

这也不是整个程序,我拿了与richtextbox和word counter

相关的部分

感谢任何帮助:)

    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();   
    }

2 个答案:

答案 0 :(得分:2)

我可能只是将RichTextBox的TextChanged事件连接起来,并在那里计算单词:

rtb.TextChanged += rtb_TextChanged;

然后计算单词(使用Giorgio Minardi的正则表达式):

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

答案 1 :(得分:1)

实际问题是什么? 这是一个计算单词的简单例程:

[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);
}