文本框内已有文字,且光标就在文字末尾,此时往文本框内输入新的文字,想同时去掉之前的文字,怎么办? 如题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那不是有backspace键嘛?不需要你做 你如果在keypress里面清空textBox那就只有当前输入的字符 用个变量当计数器,第一次Textbox的TextChanged事件,清空文本框public static int countIndex = 0;private void Form1_Load(object sender, EventArgs e){ textBox1.Focus();}private void textBox1_TextChanged(object sender, EventArgs e){ if (countIndex == 0) { textBox1.Text = ""; countIndex++; }} 我只能想到用定时器timer的方法,利用用户第二次操作的间隔private Timer timer; private bool isNeedClear; private void textBox1_TextChanged(object sender, EventArgs e) { if (timer == null) { timer = new Timer(); timer.Interval = 1000;//如果1秒没有操作,下一次文字输入时清空输入框 timer.Tick += (senderTimer, eTimer) => { isNeedClear = true; }; } timer.Enabled = false; if (isNeedClear) { (sender as TextBox).Text = string.Empty; isNeedClear = false; } timer.Enabled = true; } //突然想到,如果用时间间隔的方法,根本就不用定时器,只是要一个时间变量记录最后一次输入的时间private DateTime lastInputTime; private void textBox1_TextChanged(object sender, EventArgs e) { if (lastInputTime.AddSeconds(1) < DateTime.Now) { (sender as TextBox).Text = string.Empty; } lastInputTime = DateTime.Now;} 在11楼的基础上,增加一个string lastInputString,记录上一次输入文字的长度,然后现在的文字减去之前的文字,即可。但有个新问题,做减法的时候,再次引发了TextChanged事件,所以会不断的减,直到抛出异常,因此引入一个临时变量,记录上次输入的时间,具体代码如下:DateTime temp = this.lastInputTime; this.lastInputTime = DateTime.Now; if (temp.AddSeconds(1) < DateTime.Now) { (sender as TextBox).Text = (sender as TextBox).Text.Remove(0, this.lastInputString.Length); } this.lastInputTime = DateTime.Now; this.lastInputString = this.textBox1.Text; 转换成数据问题 继承窗体控件如何快速删除 DataTable 问题!! 高手:openfiledialog 多选摄相头文件 出错 未将对象引用设置到对象的实例?急 c# .NET下应用程序(winform)如何实现windowsXP风格 求网吧游戏同步更新算法!! 如何解决用scrapy工程打包的exe文件运行时在cmd输出的信息无法重定向到winform中? 请问,在Web页面中如何实现DataGrid的打印功能?(不用IE的打印功能) 紧急求助,散分! 请问下,引用传递的变量如何外提成为全局变量 登陆窗口功能实现,提问,谢谢
public static int countIndex = 0;private void Form1_Load(object sender, EventArgs e)
{
textBox1.Focus();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (countIndex == 0)
{
textBox1.Text = "";
countIndex++;
}
}
private Timer timer;
private bool isNeedClear;
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (timer == null)
{
timer = new Timer();
timer.Interval = 1000;//如果1秒没有操作,下一次文字输入时清空输入框
timer.Tick += (senderTimer, eTimer) =>
{
isNeedClear = true;
};
}
timer.Enabled = false;
if (isNeedClear)
{
(sender as TextBox).Text = string.Empty;
isNeedClear = false;
}
timer.Enabled = true;
}
private DateTime lastInputTime;
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (lastInputTime.AddSeconds(1) < DateTime.Now)
{
(sender as TextBox).Text = string.Empty;
}
lastInputTime = DateTime.Now;
}
this.lastInputTime = DateTime.Now;
if (temp.AddSeconds(1) < DateTime.Now)
{
(sender as TextBox).Text = (sender as TextBox).Text.Remove(0, this.lastInputString.Length);
}
this.lastInputTime = DateTime.Now;
this.lastInputString = this.textBox1.Text;