首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表视图中的选定行将保留选定的索引

列表视图中的选定行将保留选定的索引
EN

Stack Overflow用户
提问于 2013-11-14 11:11:58
回答 1查看 290关注 0票数 0

我正在试着做一个访客日志。我有一个ListView,里面有一个访问者列表。

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

代码语言:javascript
运行
复制
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);
}

我的问题是,当用户在列表中没有人选择的情况下单击signout按钮时,我必须检查selecteditem计数是否>0,如果检查失败,我会告诉用户在列表中选择某个人。现在,如果用户选择了某个人,然后将焦点从列表视图中移除,并且该访问者似乎没有被选中,则所选项目仍然显示为列表中最后一个被选中的人。

我不能在焦点离开框时重置此选项,因为那样他们将无法使用注销按钮注销用户。

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

EN

回答 1

Stack Overflow用户

发布于 2014-02-02 09:15:50

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

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

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

如果你想跳过演示(真的很遗憾,但是嘿,谁知道呢…),下面是XAML:

代码语言:javascript
运行
复制
 <TextBox Text="Click here to remove index"  GotFocus="TextBox_GotFocus"  />

下面是后面的代码:

代码语言:javascript
运行
复制
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
    this.SourceListBox.SelectedIndex = -1;
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19968821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档