小编avi*_*ook的帖子

c#listview取消选择项目

我正在开发一个Windows应用程序,它有一个包含大量项目的ListView.当用户点击某个项目时,该应用会显示该项目的详细信息.然后,用户有机会编辑这些细节.用户应在每次更改后单击"保存"按钮,但当然并非总是如此.

如果用户进行了更改但未单击"保存",则应用程序会显示一个消息框,询问他们是否要保存更改.此框包含一个取消按钮,如果他们单击取消,我想短路选择其他项目并让用户保持他们正在编辑的那个.

我找不到这样做的方法,如果项目更改而不保存,我会从itemselecedchanged事件显示对话框,如果用户单击取消,我从事件中删除我的功能并手动更改所选项目,之后我返回事件的功能,但在此之后,事件调用和我手动选择的项目未被选中.

    private bool EnsureSelected()
    {
        bool continue_ = true;
        if (_objectChange)
        {
            var res = MessageBox.Show("Do you want to save changes?", "Warning", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
            switch (res)
            {
                case DialogResult.Cancel:
                    if (!string.IsNullOrEmpty(_selectedKey))
                    {
                        listView_Keys.ItemSelectionChanged -= listView_Keys_ItemSelectionChanged;
                        listView_Keys.Focus();
                        listView_Keys.Items[_selectedKey].Selected = true;
                        listView_Keys.ItemSelectionChanged += listView_Keys_ItemSelectionChanged;
                    }
                    continue_ = false;
                    break;
                case DialogResult.Yes:
                    button_Save.PerformClick();
                    _objectChange = false;
                    break;
                case DialogResult.No:
                    _objectChange = false;
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }              
        }
        return continue_;
    }
Run Code Online (Sandbox Code Playgroud)

更新::

我试过这个解决方案:

        public partial class Form1 : Form
{ …
Run Code Online (Sandbox Code Playgroud)

c# listview winforms

7
推荐指数
1
解决办法
2381
查看次数

标签 统计

c# ×1

listview ×1

winforms ×1