如何防止 C# WinForm 列表视图选择更改时按下键和列表视图根据第一列自动查找下一行

Posted

技术标签:

【中文标题】如何防止 C# WinForm 列表视图选择更改时按下键和列表视图根据第一列自动查找下一行【英文标题】:How to prevent C# WinForm listview selection Change when key is pressed and list view auto find next row on the basis of first column 【发布时间】:2021-09-22 06:06:19 【问题描述】:

我的列表视图是从数据库表中填充的 当我按下数字键时,列表视图会自动在第一列中找到该键并将选择更改为该项目。我还没有为此目的编写任何代码。我想停止这样做。

【问题讨论】:

如果您尝试将按键事件侦听器(keydown/previewkeydown?)附加到列表视图,然后将e.Handled 设置为true,该怎么办? 您需要自己处理按键操作。有很多可能性(我最喜欢的是继承一切),最简单的是SuppressKeyPress。 【参考方案1】:

用于在 ListView 中按下键时按第一列查找项目:

        private void listView1_KeyUp(object sender, KeyEventArgs e)        
        
            var i = 0;
            var data = listView1.Items.Cast<ListViewItem>()
                                 .Select((a,b)=>new  itemText = a.Text, index = i++ )
                                 .ToList();
            var findItem = data.Where(w => w.itemText.StartsWith(e.KeyValue.ToString())).FirstOrDefault();
            if (findItem == null)
                return;

            listView1.Items[findItem.index].Focused = true;
            listView1.Items[findItem.index].Selected = true;
            listView1.Items[findItem.index].EnsureVisible();
        

【讨论】:

自动查找。我想阻止这一切。我已经解决了在按键按下时抑制按键事件。

以上是关于如何防止 C# WinForm 列表视图选择更改时按下键和列表视图根据第一列自动查找下一行的主要内容,如果未能解决你的问题,请参考以下文章

防止键盘在更改视图时关闭

绑定更改时防止列表框自动选择第一项

当父母在Android中折叠时如何更改可扩展列表视图子项的视图?

C#,WINFORM中如何实现类似WORD工具栏中选择颜色按钮的效果?

C# winform 下拉列表控件(comboBox)

如何专门防止或锁定列表控件中的行选择(报表视图)