c#使用文本框TextBox使用ctr+enter直接跳到指定Button

用TextBox类进行封装,是按钮控件外最常使用的控件,常用于接收文本输入。TextBox类派生于TextBoxBase类。

默认情况下,文本框控件只接受单行文本,此时只能水平改变控件大小而不能垂直改变。通过设置TextBox的Multiline属性为true,可以使用多行文本框。

文本框属性

  • Text属性,获取用户输入到文本框中的文本。
  • TextLength属性,获取文本框控件中文本的长度
  • Lines属性,对于多行文本框,除了可以使用Text属性获取文本外,还可以使用Lines属性,它返回一个字符串的数组,每个数组元素对应一行文本。

注意:在Lines数组中的元素没有必要与文本框控件的物理行相对应。如果允许文本换行,那么无论文本占了多少物理行,在Lines数组中都只是一个元素。可以在属性窗口中使用Lines属性为多行文本框提供初始文本。在属性窗口中选择Lines属性,将显示一个说明为”…”的小按钮。单击它就会显示”字符串采集编辑器”对话框,在其中可以输入控件文本。

  • ReadOnly属性:当它设置为true时,只能浏览而不能修改文本框中显示的内容。
  • MaxLength属性:设置文本框能输入的最大字符数
  • WordWrap属性:选择每行的文本是可以扩展超出控件边缘(false)或是在控件边界处自动换行(true),默认值为true。
  • ScrollBars属性:指定是否使用以及使用怎样的滚动条。属性值必须是枚举类型ScrollBars的值:None、Horizontal(水平)、Vertical(垂直)、Both。

注意:如果文本框的WordWrap属性设置为true,则水平滚动条不显示

  • BorderStyle属性:管理文本框控件的外观。属性值必须是枚举类型BorderStyle的值:None、FixedSingle、Fixed3D(默认值)。
  • SelectedText、SelectionStart、SelectionLength属性:用来获取或设置当前在文本框中选择的文字。

例子:

1
2
3
4
textBox1.Text = "这是一个文本框控件";
textBox1.SelectionStart = 4;
textBox1.SelectionLength = 3;
string selection = textBox1.SelectedText; //selection的内容为"文本框"
  • PasswordChar属性:用来指定文本框的屏蔽字符。
  • AcceptsReturn、AcceptsTab属性:通常情况下,不能在文本框中使用Enter键换行或是Tab键输入制表符,这两个键的默认行为是触发窗体的AcceptButton属性的Click事件和切换输入焦点。

AcceptsReturn属性,设置为true则在指定的控件中按下Enter键将会在其中新建一行文本;如果为false,则要按下Ctrl + Enter才能实现上述功能,如果只按下Enter将是激活窗体的默认按钮,如果没有设置窗体的默认按键,按下Enter还是会在新建一行文本。

AcceptsTab属性,设置为true则在指定的控件中按下Tab键时会在其中输入一个制表符;如果为false,则要使用Ctrl + Tab组合键来实现上述功能,单独按下Tab键只是切换焦点。

注意:如果文本框不支持多行输入,则这两个属性无效。

文本框的方法

  • AppendText:向文本框中附加文字
  • Clear:清除文本框中的所有文字
  • ClearUndo:清除有关撤销操作的信息
  • Copy:把文本框中的当前选择文字复制到剪贴板
  • Cut:把文本框中的当前选择文字移动到剪贴板
  • Paste:使用剪贴板中的内容替换文本框中当前选择的内容
  • Select:在文本框中选择指定范围的文字
  • SelectAll:选择文本框中的所有内容
  • Undo:撤销文本框中的最后一次修改操作

文本框的事件

TextChanged事件:在TextChanged事件的处理方法或是OnTextChanged方法中不要试图修改本文本框的内容,否则将循环触发TextChanged事件,造成死循环。

具体操作如下:

        private void textBoxSend_KeyPress(object sender, KeyPressEventArgs e)
        {
            switch (e.KeyChar)
            {
                case (char)Keys.LineFeed: //#10
                case (char)Keys.Enter: //#13
                    if (Control.ModifierKeys == Keys.Control)
                    {
                        ((TextBox)sender).Clear();// 清空文本内容
                        e.Handled = true; // 使输入失效
                    }
                    break;
            }
        } 

窗体的事件:

        private void MessageSend_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter && e.Control)
            {
                buttonSend.PerformClick();
                textBoxSend.Text = null;
                textBoxSend.Select(0, 0);
                textBoxSend.ScrollToCaret();
            }
            if (e.KeyCode ==Keys.Escape)
            {
                buttonClose.PerformClick();
            }
        }
原文地址:https://www.cnblogs.com/laojie4321/p/2494135.html