您当前的位置:首页 > winform > 文章详情

解决TextBox属性Multiline设置为True后无法Ctrl+A全选

2020-02-106215人围观

如果将TextBox属性Multiline设置为True后则无法按Ctrl+A快捷键全选,目前不清楚这样设计的目地是啥,但是我们得解决这个问题,不然会影响用户体验。

我目前的解决的思路就是监控用户按的快捷键,如果按的是Ctrl+A的组合键,再循环判断当前界面的光标焦点所处的位置是否当前需要全选的控件,如果是,则全选,代码如下:

private void TestForm_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control)//判断是否Ctrl+A组合快捷键
            {
                foreach (Control control in this.Controls)//循怀当前窗体所有的子控件  注:如果你要获取焦点的控件上级控件并非是窗体,而是放在GroupBox中,则是无法获取到的,需要用 GroupBox.Controls
                {
                    if (control.Name == "txtNew")//判断当前控件是否需要全选的控件
                    {
                        if (control.Focused)//判断焦点是否在当前控件中
                        {
                            txtNew.Focus();//获得焦点
                            txtNew.SelectAll();//全选
                            break;
                        }
                    }
                }
            }
        }

以上代码还需要把当前窗体的KeyPreview属性设置为true。


现在就能按Ctrl+A选中了:

文章评论

热门评论
暂无评论