Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择空行,然后从listview中取消选择项目_C#_.net_Winforms - Fatal编程技术网

C# 选择空行,然后从listview中取消选择项目

C# 选择空行,然后从listview中取消选择项目,c#,.net,winforms,C#,.net,Winforms,在表单加载时,我选择了列表视图中的第一行。但当我选择空行时,它会从列表视图中取消选择项目 单击空白行然后选择以前选择的行时,我应该做什么?我在谷歌上搜索过,但没有找到任何好的答案。关于stackoverflow的答案仅适用于WPF,不适用于windows窗体 在类中保存上一个索引 如果当前索引指向空字符串,请使用(1)将选择更改回上一个选择 然后调用myListView.Select() 代码: int selectedRowIndex = 0; private void listVie

在表单加载时,我选择了
列表视图中的第一行。但当我选择空行时,它会从
列表视图中取消选择项目

单击空白行然后选择以前选择的行时,我应该做什么?我在谷歌上搜索过,但没有找到任何好的答案。关于stackoverflow的答案仅适用于WPF,不适用于windows窗体

  • 在类中保存上一个索引
  • 如果当前索引指向空字符串,请使用(1)将选择更改回上一个选择
  • 然后调用myListView.Select()
  • 代码:

    int selectedRowIndex = 0;    
    private void listViewUserList_SelectedIndexChanged(object sender, EventArgs e)
    {
        if(listViewUserList.SelectedIndices.Count == 0)
           return;
    }
    private void Form_Load(object sender, EventArgs e)
    {
        if(listViewUserList.Items.Count > 0)
        {
            listViewUserList.Items[selectedRowIndex].Selected = true;
            listViewUserList.Select();
        }
    }
    

    这可以通过为
    ListView
    MouseUp
    事件添加事件处理程序来实现。如果仍然需要
    SelectedIndexChanged
    及其委托方法
    listViewUserList\u SelectedIndexChanged
    的事件处理程序,请从中删除任何处理项目选择的代码:

     private void Form_Load(object sender, EventArgs e)
     {
         if(listViewUserList.Items.Count > 0 && (String.Empty != listViewUserList.Items[selectedRowIndex].ToString() ))
         {
             listViewUserList.Items[selectedRowIndex].Selected = true;
             listViewUserList.Select();
         }
     }
    
    添加以下事件处理程序:

    private void listViewUserList_SelectedIndexChanged(object sender, EventArgs e)
    {
        // remove the 2 lines below, as the selection handling is done in the
        // MouseUp event handler
    
        //if(listViewUserList.SelectedIndices.Count == 0)
        //   return;
    
        // TODO: get the column data
    }
    
    以及以下方法:

    listViewUserList.MouseUp += new MouseEventHandler(this.listViewUserList_MouseUp);
    

    在Winforms中,我已经明确提到了…@Rahul
    Page.Ispostback
    在Winforms中没有太多作用:)我不太清楚你在这里问什么。你能重新表述一下你的问题吗?@Alex我的项目是.NET/WinForms。我有一个列表视图,它总是充满了项目。我希望它总是有选择。但是,如果我单击列表视图项目下方的空白区域,则会失去选择。但是,如果我单击列表视图项目下方的空白区域,它失去了选择。我希望listview SelectedIndexChanged我必须获取Column数据Alex你可以在SelectedIndexChanged事件中执行什么操作?对
    SelectedIndexChanged
    的单个调用范围内没有足够的信息来做出正确的选择。更重要的是,如果在该方法中更改了选择,则必须确保不会递归触发其他
    SelectedIndexChanged
    事件(基本上,这意味着您必须在方法开始时从事件中注销事件处理程序,并在结束时重新注册)。
    private void listViewUserList_MouseUp(object sender, MouseEventArgs e)
    {
        if (listViewUserList.SelectedItems.Count > 0)
        {
            selectedRowIndex = listViewUserList.SelectedItems[0].Index;
        }
        else
        {
            listViewUserList.Items[selectedRowIndex].Selected = true;
        }
    }