【问题标题】:Selected row in listview keeps selected index列表视图中的选定行保留选定的索引
【发布时间】:2014-02-02 09:15:50
【问题描述】:

我正在尝试制作访客日志。我有一个 ListView,其中包含访问者列表。

如果您选择访问者并单击按钮,它将通过更新数据库中指示他们已退出的字段将其从列表中删除,然后刷新列表以仅显示未选中该字段的访问者。

if (lsvVisitors.SelectedItems.Count > 0)
{
    if (MessageBox.Show(string.Join(Environment.NewLine, "Do you wish to sign-out " 
        + lsvVisitors.SelectedItems[0].SubItems[0].Text + " " 
        + lsvVisitors.SelectedItems[0].SubItems[1].Text),
        "Confirm", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) 
            == System.Windows.Forms.DialogResult.OK)
    {
        var entry = _repository.GetLogbookEntryById((LogbookEntry)lsvVisitors.SelectedItems[0].Tag);
        _repository.SignOutLogbookEntry(entry);
        UpdateList();
    }   
}
else
{
    MessageBox.Show(string.Join(Environment.NewLine,
        "You need to select a Visitor to sign-out"), 
        "Warning", 
        MessageBoxButtons.OK, 
        MessageBoxIcon.Warning);
}

我的问题是,当用户单击列表中未选择任何人的退出按钮时,我必须检查所选项目计数是否 > 0,如果未通过此检查,我会告诉用户选择列表中的某个人。现在,如果用户选择某人,然后将焦点从列表视图中移除,并且似乎未选择访问者,则所选项目仍显示为列表中选择的最后一个人。

当焦点离开框时,我无法重置此设置,因为那样他们将无法使用退出按钮退出用户。

我在问,如果项目不再仅在列表中可见地被选中,如何重置我的列表视图的 selecteditems.count?

【问题讨论】:

  • 我认为当你失去焦点时仍然应该选择它..
  • 是的,Noctis,它必须被选中
  • 是的。我希望它在焦点更改为注销按钮时保留所选项目,但如果焦点在任何其他场合发生变化,我希望它丢失所选项目。这可能吗?
  • 您希望在焦点更改为退出按钮时保留所选项目,并且如果焦点从退出按钮右侧更改,您希望列表视图以松开所选项目,是的,这是可能的。
  • 您必须手动设置 selectedItem 在其他地方,您希望它取消选择。类似lsvVisitors.SelectedIndex = -1

标签: c# listview


【解决方案1】:

既然Ashes999问了,这里有一个例子:zip with solution and demo

它基于我为代码项目写的这篇文章:Selected value, index and more

我在底部添加了一个文本框,并连接了OnFocus 事件以将列表框选定索引设置为-1。这样,您可以更改焦点以在您想要的对象上将所选索引重置为 -1,并将其保留为您的提交按钮。

如果您想跳过演示(真的很遗憾,但是嘿,谁知道...),这里是 XAML:

 <TextBox Text="Click here to remove index"  GotFocus="TextBox_GotFocus"  />

下面是代码:

private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
    this.SourceListBox.SelectedIndex = -1;
}

(注意,您需要一个名为SourceListBoxListBox,或者相应地重命名它)

【讨论】:

    猜你喜欢
    • 2012-08-09
    • 2017-03-19
    • 2016-03-17
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    相关资源
    最近更新 更多