蓝泉的博客

蓝泉的博客

TextBox复制剪切问题

首先在布局中添加键盘监听,如下:

<TextBox Keyboard.KeyDown="TextInput_PreviewKeyDown"/>

然后再***.xaml.cs文件中实现监听处理规则:

        private bool keydown = false;
        private void TextInput_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            var box = (TextBox)sender;
            if (!keydown)
            {
                keydown = true;
                if (e.Key == Key.Enter)//点击Enter键
                {
                    //相关处理事件
                } else if (e.KeyboardDevice.Modifiers == ModifierKeys.Control && e.Key == Key.X) {//剪切
                    var selectedStr = box.SelectedText;
                   
                    if (String.IsNullOrEmpty(selectedStr)) return;
                    try {
                        Dispatcher.Invoke(() =>
                        {
                            var selStartIndex = box.SelectionStart;
                            var remainStr = box.Text.Remove(selStartIndex, selectedStr.Length);
                            box.Text = remainStr;
                            box.SelectionStart = selStartIndex;
                            Clipboard.SetDataObject(selectedStr);
                        });
                        e.Handled = true;
                    } catch (Exception ex) {
                        Console.WriteLine("剪切失败:" +ex.Message);
                    }

                   
                } else if (e.KeyboardDevice.Modifiers == ModifierKeys.Control && e.Key == Key.C) {//复制
                    var selectedStr = box.SelectedText;
                    if (String.IsNullOrEmpty(selectedStr)) return;
                    try
                    {
                        Dispatcher.Invoke(() =>
                        {
                            Clipboard.SetDataObject(selectedStr);
                        });
                        e.Handled = true;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("复制失败:" + ex.Message);
                    }
                    
                }
                keydown = false;
            }
        }

注意:有的设备上使用WPF程序的剪切功能会失败,原因已经有网友整理,这里给出网友的解释说明,有兴趣可以研究看看:

https://blog.csdn.net/puncha/article/details/8174374

https://www.cnblogs.com/wliu6V/p/3506675.html?utm_source=tuicool




阅读更多
版权声明: https://blog.csdn.net/m0_37698386/article/details/80350524
个人分类: WPF
想对作者说点什么? 我来说一句

WPF完美实现复制粘贴剪切功能

2012年04月25日 49KB 下载

没有更多推荐了,返回首页

不良信息举报

TextBox复制剪切问题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭