在textBox中键入时,如何检查textBox中的文本是否相同

本文关键字:textBox 检查 文本 是否 何检查 | 更新日期: 2023-09-27 18:00:29

我有这个表单:

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

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

我希望当用户在文本框中键入某个内容时,如果它是Contain/Exist键,则将文本框中的文本涂成红色。用户一直在键入,而文本不是Contain/EX将其重新涂成黑色,但每次如果文本框Contain/Eexist中的文本已经将其涂成红色,并且仅当它匹配时,而不是当文本在其他文本中时:

这是黑色的:例如:Danny hello all

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

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

新表单再次更新代码,文本框1文本更改事件:

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

在textBox中键入时,如何检查textBox中的文本是否相同

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。

您可以通过定义方法来实现textBox1TextChanged事件处理程序

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属性