如何在textBox中键入时检查textBox中相同的文本?

时间:2013-02-21 16:31:25

标签: c#

我有这张表格:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace GatherLinks
{
    public partial class ChangeLink : Form
    {


        public ChangeLink()
        {
            InitializeComponent();

        }

        public string getText()
        {
            return textBox1.Text;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBox1.Text))
            {
                DialogResult = DialogResult.OK;
            }
            else
            {

            }

        }

        private void ChangeLink_Load(object sender, EventArgs e)
        {
            this.AcceptButton = button1;
        } 

    }
}

这个代码在Form1中:

public void KeysValuesUpdate()
        {
            DialogResult dr = DialogResult.None;
            using (var w = new StreamWriter(keywords_path_file))
            {

                crawlLocaly1 = new CrawlLocaly(this);
                crawlLocaly1.StartPosition = FormStartPosition.CenterParent;
                if (FormIsClosing != true)
                {
                    dr = crawlLocaly1.ShowDialog(this);
                }
                if (dr == DialogResult.OK)
                {
                    if (LocalyKeyWords.ContainsKey(mainUrl))
                    {
                        LocalyKeyWords[mainUrl].Clear();
                        LocalyKeyWords[mainUrl].Add(crawlLocaly1.getText());
                    }
                    else
                    {
                        LocalyKeyWords[mainUrl] = new List<string>();
                        LocalyKeyWords[mainUrl].Add(crawlLocaly1.getText());
                    }
                    Write(w);
                    ClearListBox();
                }
                if (dr == DialogResult.Cancel)
                {
                    Write(w);
                }
                if (dr == DialogResult.None)
                {
                    Write(w);
                }
            }
        }

此处调用KeysValuesUpdate()函数:

private void button2_Click(object sender, EventArgs e)
        {
            cl = new ChangeLink();
            cl.StartPosition = FormStartPosition.CenterParent;
            DialogResult dr = cl.ShowDialog(this);
            if (dr == DialogResult.Cancel)
            {
                cl.Close();
            }
            else if (dr == DialogResult.OK)
            {
                label4.Text = cl.getText();
                mainUrl = cl.getText();
                if (!LocalyKeyWords.ContainsKey(mainUrl))
                {
                    newUrl = true;
                    KeysValuesUpdate();
                }
                else
                {
                    newUrl = false;
                    KeysValuesUpdate();
                }
                OptionsDB.set_changeWebSite(cl.getText());
                cl.Close();
                listBox1.SelectedIndex = listBox1.Items.Count - 1;
            }
        }

当我点击button2时,它会打开带有文本框的新表单,然后在里面我可以输入文本。 然后我检查里面的文本是否已经存在,然后newUrl是false或true。 然后,当我单击确定新表单中的确定按钮,然后检查我输入的文本是否已包含/存在。

我希望当用户在输入时在文本框中键入内容时,如果它包含/存在该键,则在文本框中为文本中的文本着色,用户将继续键入并且文本不包含/显示颜色回到黑色,但每次如果文本框包含/存在中的文本已经用红色着色,并且只有在匹配的情况下才会将文本放在其他文本中:

这是黑色的: 例如:丹尼你好所有

但如果我只输入文本框:你好 然后单词hello将为Red,然后如果我在hello之后继续输入,则文本框中的所有文本都是Black,如果我删除文本并且只保留单词hello,那么它将再次为Red。

这应该是根据上面的代码,并在文本框中输入文本时实时。

新表单再次使用textBox1文本的更新代码更改了事件:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace GatherLinks
{
    public partial class ChangeLink : Form
    {
        Form1 f1;

        public ChangeLink(Form1 f)
        {
            InitializeComponent();

            f1 = f;
        }

        public string getText()
        {
            return textBox1.Text;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBox1.Text))
            {
                DialogResult = DialogResult.OK;
            }
            else
            {

            }

        }

        private void ChangeLink_Load(object sender, EventArgs e)
        {
            this.AcceptButton = button1;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (f1.mainUrl.Contains(textBox1.Text))
            {
                textBox1.ForeColor = Color.Red;
            }
            else
                textBox1.ForeColor = Color.Black;
        } 

    }
}

2 个答案:

答案 0 :(得分:1)

private void textBox_TextChanged(object sender, EventArgs e)
        {
            if (Regex.IsMatch(yourtext, @"\b" + textBox.Text + @"\b"))
            {
                textBox.ForeColor = Color.Red;
            }
            else
                textBox.ForeColor = Color.Black;
        }

将包含变量名称的数据放在yourtext

的位置

我编辑了答案。它完全匹配你要求的整个单词。要使用Regex课程,请添加System.Text.RegularExpressions namesapce。

答案 1 :(得分:0)

只需定义方法即可实现textBox1 TextChanged 事件处理程序

private void textBox1_TextChanged(object sender, EventArgs e)
{
    var textBox = sender as TextBox;
    String text = textBox.Text;
    if (SomeCheck(text))
    {
        textBox.ForeColor = Color.Red;
    }
    else
    {
        textBox.ForeColor = Color.Black;
    }
}

并将方法textBox1_TextChanged分配给textBox的OnTextChanged属性