WPF 后台实现按数字键滚动DataGrid 当前选中项

  最近遇到个项目,设备上没有鼠标,界面为全屏的一个DataGrid,需要实现按小键盘的0和1让DataGrid的当前选中行进行上下滚动

  起到重要参考的是:   https://blog.csdn.net/sinat_31608641/article/details/105428496    实现后台滚动到当前选中项。
      现在把主要实现方式做个笔记:

  首先,前台一定要设置VirtualizingStackPanel.IsVirtualizing="False"

  接下来,是两个公共方法:

  

/// <summary>        /// 将SelectedItem滚动为第一行        /// </summary>        /// <param name="dataGrid">目标DagaGrid</param>        /// <param name="selectedItem">选中项</param>        public static void SetSelectedItemFirstRow(object dataGrid, object selectedItem)        {            //若目标datagrid为空,抛出异常            if (dataGrid == null)            {                throw new ArgumentNullException("目标无" + dataGrid + "无法转换为DataGrid");            }            //获取目标DataGrid,为空则抛出异常            System.Windows.Controls.DataGrid dg = dataGrid as System.Windows.Controls.DataGrid;            if (dg == null)            {                throw new ArgumentNullException("目标无" + dataGrid + "无法转换为DataGrid");            }            //数据源为空则返回            if (dg.Items == null || dg.Items.Count < 1)            {                return;            }            //获取焦点,滚动为目标行            dg.Focus();            dg.SelectedItem = selectedItem;            dg.CurrentColumn = dg.Columns[0];            dg.ScrollIntoView(dg.SelectedItem, dg.CurrentColumn);        }        /// <summary>        /// 获取选中的行        /// </summary>        /// <param name="datagrid"></param>        /// <param name="rowIndex"></param>        /// <returns></returns>        public static DataGridRow GetDataGridRow(DataGrid datagrid, int rowIndex)        {            DataGridRow row = (DataGridRow)datagrid.ItemContainerGenerator.ContainerFromIndex(rowIndex);            if (row == null)            {                datagrid.UpdateLayout();                row = (DataGridRow)datagrid.ItemContainerGenerator.ContainerFromIndex(rowIndex);                row.IsSelected = true;            }            return row;        }

  然后,添加一个窗体的KeyDown事件:

  

private void UserControl_KeyDown(object sender, KeyEventArgs e)        {            dgvDeal.Focus();            if (e.Key==Key.NumPad0)            {                if (dgvDeal.SelectedIndex == dgvDeal.Items.Count-1)                {                    dgvDeal.SelectedIndex = 0;                 }                else                {                    dgvDeal.SelectedIndex = dgvDeal.SelectedIndex + 1;                 }            }            else if (e.Key == Key.NumPad1)            {                if (dgvDeal.SelectedIndex == 0)                {                    dgvDeal.SelectedIndex = dgvDeal.Items.Count-1;                 }                else                {                    dgvDeal.SelectedIndex = dgvDeal.SelectedIndex - 1;                 }            }                          DataGridRow resRow = GetDataGridRow(dgvDeal, dgvDeal.SelectedIndex);            resRow.IsSelected = true;            SetSelectedItemFirstRow(dgvDeal, dgvDeal.SelectedItem);                     }

OK!

(0)

相关推荐

  • WPF控件操作之改变父控件之TabControl示例

    昨天做个简单的演示,想偷懒,但同时又想用WPF再做一个,稍微提高一下演示的美观,助力拿下订单.所以,在做完WinForm后,又做了一个wpf版本的,但控件在不同容器之间的移动,winform和wpf差 ...

  • 电脑上数字键打不出来怎么办

    品牌型号:联想天逸510S 2020 系统:win10 1909 64位企业版 部分用户可能电脑型号不一样,但系统版本一致都适合该方法. 电脑上数字键打不出来怎么办呢?给大家分享一下电脑上的键盘的数字 ...

  • 在Excel 里,Ctrl键与10个数字键可以这样用

    大家好,我是森泰电脑培训的崔老师! 今天又要为大家分享办公软件中常用的快捷键技巧,要多多练习哈. 键盘是我们电脑数据录入的必备设备,使用频率较高的就是10个数字键和26个英文字母键,键与键的组合往往在 ...

  • Ctrl键与10个数字键,在Excel可以这样玩,值得收藏

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力! 键盘是我们录入的必备设备,应用频率较高的应该是10个数字键和26个字母键,那么你知道除了录入内容外,这些键还能给我们的工作 ...

  • 电脑键盘数字键失灵怎么办 电脑键盘数字键失灵解决方法

    信息时代的今天,电脑已经是人们工作.生活娱乐不可缺少的电子产品,随着人们更加频繁地使用电脑,出现问题的几率也就相对来说更高了,例如电脑键盘数字键失灵等问题已经屡见不鲜了,那么如何坚决这个问题呢?如果你 ...

  • HP 笔记本电脑 - 键盘大写键和数字键闪烁的含义

    本文档适用于自 2008 年底开始采用 HP Unified Extensible Firmware Interface (UEFI) 的惠普笔记本电脑 开机加电,风扇转动,但是屏幕无显示,同时大写键 ...

  • Alt + 数字键 符号大全

    输入的时候只需先按住Alt键不放再按(小键盘的)数字键,然后放开就可以完成输入. 万分之几的符号输入方法: 方法1:插入-符号-其他符号-进入符号窗口,点击左边的符度号,字体选择"Lucid ...

  • 小键盘数字键不能用怎么办

    按键盘上的按键进行恢复和锁定 使用键盘打开"鼠标键" 1.按左 ALT 键 + 左 SHIFT 键 + NUM LOCK 键. 2.在鼠标键信息对话框中,按 SPACEBAR 键可 ...

  • 小键盘数字键不能用怎么办 小键盘数字键不能用解决方法

    键盘是我们再熟悉不过的东西了.它是计算机非常重要的辅助部件,没有键盘,我们使用计算机就会变得非常困难,也难以再输入一些文字性的内容.在一般情况下,大尺寸的笔记本和台式电脑的键盘右侧都会有一个数字小键盘 ...

  • 应急西班牙语输入法:数字键输入西语字符

    有时候没有西班牙语输入法,怎么输入西语呢?下面就向大家介绍怎么用另外一种方法输入西语: 1.确认小键盘可用,检查Num Lock(数码锁定) 灯已经亮起. 2.按住"Alt"键不动 ...