我正在使用 C# .net 4.0 VS 2010。
我正在尝试制作一个模拟 facebook 行为的文本框,特别是在文本框中有“+ Enter Message”并且颜色为灰色。我还交换了 tabindex,因此默认情况下不选择文本框(破坏错觉)。
假设当用户点击文本框时 textbox.text 消失然后前景色变回黑色。
发生的情况是,它检测到我在 Form_Load 上放置的程序更改,并在事件显示之前运行它。
如何区分用户触发和程序在 textbox1_TextChange 事件上触发。
这是我的代码:
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//facebook illusion
this.textBox1.ForeColor = System.Drawing.ColorTranslator.FromHtml("#CCCCCC");
this.textBox1.Text = "+Enter Message";
}
//when the user clicks on the textbox
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.textBox1.Text.Trim() == "+Enter Message")
{
this.textBox1.ForeColor = System.Drawing.ColorTranslator.FromHtml("#000000");
this.textBox1.Text = "";
}
}
仅供参考,这是最终的工作代码-------------
private void Form1_Load(object sender, EventArgs e)
{
//facebook illusion
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);
this.textBox1.ForeColor = System.Drawing.ColorTranslator.FromHtml("#CCCCCC");
this.textBox1.Text = "+Enter Message";
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.textBox1.Click += new System.EventHandler(this.textBox1_Click);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.textBox1.Text.Trim() == "+Enter Message")
{
this.textBox1.ForeColor = System.Drawing.ColorTranslator.FromHtml("#000000");
this.textBox1.Text = "";
}
}
private void textBox1_Click(object sender, EventArgs e)
{
if (this.textBox1.Text.Trim() == "+Enter Message")
{
this.textBox1.ForeColor = System.Drawing.ColorTranslator.FromHtml("#000000");
this.textBox1.Text = "";
}
}