繁体   English   中英

在C#WinForm ListBox上,如何通过按下一个键清除对多个项目的选择?

[英]On C# WinForm ListBox how to clear the selection of multiple items with a key pressed?

我正在尝试在按Escape键时清除WinFom ListBox中所有项目的选择。

我创建了一个KeyPress事件处理程序以捕获事件。 当仅选择一项时,它起作用,但是当选择多项时,该事件永不触发。 有什么想法吗?

提前致谢。

在这里,我附加了事件处理程序:

private void EscapeKeyPressed(object sender, KeyPressEventArgs e)
    {
        try
        {
            if (e.KeyChar == (char)Keys.Escape)
            {
                switch (sender.GetType().GetProperty("Name").GetValue(sender, null).ToString())
                {
                    case "LineLB":
                        LineLB.ClearSelected();
                        break;
                    case "ApplicationLB":
                        ApplicationLB.ClearSelected();
                        break;
                    default:
                        break;
                }
            }
        }
        catch(Exception ex) { MessageBox.Show(ex.Message); }

--20150526--

谢谢大家的意见和建议。 正如您中某些人之前提到的,这是一个焦点问题。 我在SelectedIndexChange事件处理程序中添加了一行代码,在这里进行了比较。

之前

private void LineLB_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            if (LineLB.SelectedItems.Count > 1)
                ClearControlsFromPanel(PanelUser);
            else{
                   ...

    private void LineLB_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            if (LineLB.SelectedItems.Count > 1){
                ClearControlsFromPanel(PanelLine);
                LineLB.Focus();
            }
            else{
                   ...

这是由于在与其他ListBox一起使用时将焦点放在一个ListBox上,因此需要使用Form的KeyPress事件而不是ListBox。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM