如何保存ListView所选项目

时间:2013-08-21 10:42:18

标签: c# listview

我正在尝试保存ListView所选项目,但我不知道为什么会收到此错误:

  

“无法将类型'int'隐式转换为   'System.Windows.Forms.ListView.SelectedListViewItemCollection'“

我在保存按钮上尝试了这段代码:

Settings.Default["SelectedDevice"] = sourceList.SelectedItems; //Works fine
在Form_Load上的

我试过这个:

sourceList.SelectedItems = (int)Settings.Default["SelectedDevice"]; //error

3 个答案:

答案 0 :(得分:1)

我做了一个小应用程序,我从设置中读取了选定项目。在OnLoad-Event中选择Item的代码是:

 private void OnLoad(object sender, EventArgs eventArgs)
 {
    int selectedItem = Properties.Settings.Default.SelectedItem;
    if (selectedItem != -1)
    {
       this.listView1.Items[selectedItem].Selected = true;
    }
  }

我的设置的默认值为-1

答案 1 :(得分:0)

首先SelectedItems只读属性,无法设置。其次,它是SelectedListViewItemCollection而不是int

如果您尝试在列表中存储所选项目的索引,则需要执行以下操作:

// store CSV list of indices
Settings.Default["SelectedItems"] = String.Join(",", listView.SelectedIndices.Select(x => x));
...
// load selected indices
var selectedIndices = ((string)Settings.Default["SelectedItems]).Split(',');
foreach (var index in selectedIndices)
{
    listView.Items[Int32.Parse(index)].Selected = true;
}

答案 2 :(得分:0)

sourceList.SelectedItems = (int)Settings.Default["SelectedDevice"]; //error

有错误。

请参阅以下内容。 How to select an item in a ListView programmatically?