Code Bye

C# winform 如何删除文本框内 光标前一个内容

 

有一个文本框 里有 内容为  沪A |88888(红色为光标)
我要 点击删除按钮后  变为  沪|88888 把光标前的 A 从文本框内删除 焦点在””沪””后面 这样的效果


5分
用SelectionStart获得光标所在下标,然后截取字符串赋值。要么就用API send一个backspace

5分
int s = txtMsg.SelectionStart;
txtMsg.Text= txtMsg.Text.Remove(s – 1, 1);

6分
            int s = txtMsg.SelectionStart;
            txtMsg.Text = txtMsg.Text.Remove(s - 1, 1);
            txtMsg.Focus();
            txtMsg.SelectionStart = s - 1;
            txtMsg.SelectionLength = 0;

改进了一下代码


12分
     private int start = -1;

        private void button1_Click(object sender, EventArgs e)
        {
            if (start > 0)
            {
                //删除光标前一位
                textBox1.Text = textBox1.Text.Remove(start - 1, 1);
                //光标行前移一位
                textBox1.Select(start - 1, 0);
                //textBox获取焦点
                textBox1.Select();
            }
            else if (start == 0)
            {
                textBox1.SelectionStart = 0;
                textBox1.Select(0, 0);
                textBox1.Select();
            } 
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.LostFocus += new EventHandler(textBox1_LostFocus);
        }

        void textBox1_LostFocus(object sender, EventArgs e)
        {
            //记录textBox光标位置
            start = textBox1.SelectionStart;
        }

在点击删除按钮后,textbox会失去焦点,所以直接获取textbox.selectedstart是没办法的,要在textbox失去焦点时候记录光标的位置,然后再进行删除操作


12分
        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Focus();    //按按钮时文本框会失去焦点,先让文件框获得焦点
            SendKeys.Send(“{BS}”);    //发送一个退格键即可
        }
private void abc(TextBox tbx)
        {
            if (tbx.Text.Length <= 0)
            {
                tbx.Focus();
                return;
            }

            if (tbx.SelectionStart <= 0)
            {
                tbx.Focus();
                return;
            }

            int index = tbx.SelectionStart;
            tbx.Text = tbx.Text.Remove(index-1, 1);
            tbx.Focus();
            tbx.SelectionStart = index – 1;
        }

自己摸索出一个方法 打包成一个函数。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# winform 如何删除文本框内 光标前一个内容