1

ここで何が問題なのかわかりませんが、リッチテキスト ボックス内の単語を数えて、それをラベル付きで表示しようとしています。

タブ付きのテキスト ボックスを使用できるように、リッチテキスト ボックスをタブ コントロールに配置しました。これは、これを本来よりもはるかに難しくしているようです

また、これはプログラム全体ではありません。リッチテキストボックスとワードカウンターに関連する部分を取り上げました

どんな助けでも大歓迎です:)

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

2 に答える 2

2

おそらくTextChanged、RichTextBox のイベントを接続して、そこにある単語を数えるだけです。

rtb.TextChanged += rtb_TextChanged;

次に、単語を数えます (Giorgio Minardi の正規表現を使用):

private void rtb_TextChanged(object sender, EventArgs e) {
  label2.Text = Regex.Matches(((RichTextBox)sender).Text, @"[\S]+").Count.ToString();
}
于 2012-05-09T16:45:03.923 に答える
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);
}
于 2012-05-09T16:29:56.793 に答える