日期:2014-05-18  浏览次数:20790 次

WinForm如何在TextBox上输入一个退格符
先强调一下,是WinForm程序,不是asp.net,否则我会到Web组发帖了。

为WinForm的TextBox做了一个类似软键盘的东西,可以用类似下面的语句给TextBox的光标当前位置插入一个字符:
txtContent.Paste("A");
或者在光标所在处插入一个回车换行符:
txtContent.Paste("\r\n");

但是如果我想在光标所在位置处进行删除,就象按了退格键一样,应该怎么做?
我试过插入退格符是不行的:
txtContent.Paste("\b");

------解决方案--------------------
C# code

        #region 退格删除
        /// <summary>
        /// 退格删除
        /// </summary>
        private void backSpace()
        {
            if (this.tempStr.Length > 0)
            {
                this.tempStr = this.tempStr.Remove(this.tempStr.Length - 1);
                this.txtMsg.Text = tempStr;
            }

        }
        #endregion

------解决方案--------------------
实在不行用win API, sendinput, sendmessage 之类
------解决方案--------------------
txtContent.Text = txtContent.Text.SubString(0, txtContent.Text.Length - 1);
------解决方案--------------------
探讨
txtContent.Text = txtContent.Text.SubString(0, txtContent.Text.Length - 1);

------解决方案--------------------
哦。。。
if (txtContent.SelectStart != 0)
{
int pos = txtContent.SelectStart;
txtContent.Text = txtContent.Text.SubString(0, txtContent.SelectStart - 1) + txtContent.Text.SubString(txtContent.SelectStart + txtContent.SelectLength);
textContent.SelectStart = pos - 1;
}
------解决方案--------------------
把光标处的字符删了不就相当于退格了么。