我不确定这里有什么问题,但我正在尝试在富文本框中计算单词,并用标签显示。
我在一个标签控件中放了一个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();
}
答案 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);
}