如果用户开始在文本框中键入值更改为输入,如果用户没有键入任何事物值更改为 C# 中的特定字符串



我有一个列表视图,并创建了一个文本框来在该列表中搜索它!搜索一切正常!但问题是我希望我的搜索框是这样的:首先是Searchbox.Text="Search…",如果用户开始在该搜索框中键入,则更改为该关键字!else(if)searchbox为空searchbox。文本再次更改为"Search…"!也许有点复杂!但我试了1-2个小时!但没能成功!我使用过计时器、checkexchange事件、布尔值,。。。!但没能成功!:(请帮忙!*我的搜索框名称是textbox1。我测试的一些代码:

private void textBox1_TextChanged(object sender, EventArgs e)
    {
        string str = textBox1.Text;
        /*
        if (!keywordentered_bool)
        {
            textBox1.Text = "";
        }
         */
        if (str != "")
        {

           //Doing Search operations!
                search_bool = true;
            }
            else
            {//Doing Search operations!
                search_bool = true;
              //  keywordentered_checkbox.Checked = true;
                Searchtextbox_Timer.Interval = 100;
                Searchtextbox_Timer.Enabled = true;
                Searchtextbox_Timer.Tick += Searchtextbox_Timer_Tick; 
                //textBox2.Visible = false;
            }
        }
        else 
        {
            if (search_bool)
            {
                listView1.Items.Clear();
                label1.Visible = false;
                listView1.Items.AddRange(Originalplaylist_list.ToArray());
                if (!search_bool)
                {
                    listView1.Items[MusicLogindex_list[MusicLogindex_list.Count - 1]].ForeColor = Color.Cyan;
                }
                else if (search_bool)
                {//Doing Search operations
            search_bool = false;
            Searchtextbox_Timer.Interval = 100;
            Searchtextbox_Timer.Enabled = true;
            Searchtextbox_Timer.Tick += Searchtextbox_Timer_Tick; 
            //textBox2.Visible = true;
           // keywordentered_checkbox.Checked = false;
        }
    }
void Searchtextbox_Timer_Tick(object sender, EventArgs e)
    {
        if (!search_bool)
        {
            textBox2.Visible = true;
            textBox2.Location = textBox1.Location;
            //textBox1.Text = "Search ...";
            //textBox1.ForeColor = Color.Gray;
            //textBox1.Font = new Font(textBox1.Font, FontStyle.Italic);
        }
        else 
        {
            textBox2.Visible = false;
         //   textBox1.Text = "";
         //   textBox1.ForeColor = Color.Black;
         // textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
        }
        Searchtextbox_Timer.Enabled = false;
        //throw new NotImplementedException();
    }

这只是psuedocode,但概念已经存在,并且您需要实现文本更改事件以进行搜索,您可以在事件处理程序中进行其他更改。

Textbox myTxtbx = new Textbox();
myTxtbx.Text = "Enter text here...";
myTxtbx.OnFocus += OnFocus.EventHandle(RemoveText);
myTxtbx.LoseFocus += LoseFocus.EventHandle(AddText);
public RemoveText(object sender, EventArgs e)
{
     myTxtbx.Text = "";
}
public AddText(object sender, EventArgs e)
{
     if(string.IsNullorEmpty(myTxtbx.Text))
        myTxtbx.Text = "Enter text here...";
}

这是一个示例,显示了对于动态文本框控件,您可以将这些事件添加到控件中,并使用相同的代码使其工作。

或者你可以使用这个插件

Visual Studio库插件

另一个可以用于此目的的插件

带有占位符的文本框

希望这能有所帮助。

感谢@Frebin Francis,我的问题解决了!我从这个链接下载了源代码TextBox With Placeholder并将其添加到我的项目中!然后把它添加到我的表单中,是的!:)

相关内容

  • 没有找到相关文章

最新更新