如何在Windows窗体C#中的已检查列表框中保存已检查的项目

时间:2016-07-12 21:55:43

标签: c# winforms class listview checklistbox

我正在开发一个游戏库应用程序,它将用户的游戏集合添加到列表视图中,其中包含多个子项目。我有一个子项目,它是一个检查列表框,允许您检查游戏所针对的平台或系统。我已经更改了listview所选索引的代码,当您在列表视图中选择项目时,会显示游戏标题的已保存信息。但是,我无法弄清楚如何从选中的列表框中保存信息,并让它显示用户在选择指定游戏时先前检查过的平台。我把所有东西安排在课堂上,我的代码在下面。我已经尝试在我的f.platformCheckBox.CheckedItems.ToString() = f.Game[f.gameList.SelectedItems[0].Index].platform;类中写出IndexChanged.cs,但它会抛出一个错误,指出“赋值的左侧必须是变量,属性或索引器”。所以我无法做到这一点。这是我下面的代码,如果有人对如何保存已检查列表框的内容有任何建议,我将非常感激。注意:IndexChanged类位于代码的底部,我想我可能会显示所有代码,以防万一我在代码中遗漏了其他重要的东西。

namespace GameLibrary
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public List<Library> Game = new List<Library>();
        public Library lib = new Library();

    public void saveBttn_Click(object sender, EventArgs e)
    {
        Save save = new Save();
        save.saveChanges(this);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Add add = new Add();
        add.addGame(this);
    }

    private void deleteBtnClick_Click(object sender, EventArgs e)
    {
        Delete delete = new Delete();
        delete.deleteGame(this);
    }

    private void gameList_SelectedIndexChanged(object sender, EventArgs e)
    {
        IndexChanged Index = new IndexChanged();
        Index.selectedIndexChanged(this);
    }

    private void searchBttn_Click_1(object sender, EventArgs e)
    {
        Search search = new Search();
        search.searchLibrary(this);
    }
}
public class Library
    {
        public string gametitle
        {
            get;
            set;
        }
        public string developer
        {
            get;
            set;
        }
        public string publisher
        {
            get;
            set;
        }
        public string platform
        {
            get;
            set;
        }
    }
class Save
    {
        public void saveChanges(Form1 f)
        {
            if (f.gameList.SelectedItems.Count == 1)
            {
                f.Game[f.gameList.SelectedItems[0].Index].gametitle = f.titleText.Text;
                f.Game[f.gameList.SelectedItems[0].Index].developer = f.developerText.Text;
                f.Game[f.gameList.SelectedItems[0].Index].publisher = f.publisherText.Text;
                f.Game[f.gameList.SelectedItems[0].Index].platform = f.platformCheckBox.CheckedItems.ToString();
            }
        }
    }
class Add
    {
        public void addGame(Form1 f)
        {
            f.lib.gametitle = f.titleText.Text;
            f.lib.developer = f.developerText.Text;
            f.lib.publisher = f.publisherText.Text;
            f.lib.platform = f.platformCheckBox.CheckedItems.ToString();
            f.Game.Add(f.lib);
            f.gameList.Items.Add(f.lib.gametitle);
            f.titleText.Clear();
            f.developerText.Clear();
            f.publisherText.Clear();
            foreach (int i in f.platformCheckBox.CheckedIndices)
            {
                f.platformCheckBox.SetItemCheckState(i, CheckState.Unchecked);
            }
        }
    }
class Search
    {
        public void searchLibrary(Form1 f)
        {
            foreach(ListViewItem item in f.gameList.Items)
            {
                if(item.Text.StartsWith(f.lib.gametitle))
                {
                    item.Selected = true;
                    item.BackColor = SystemColors.Highlight;
                    item.ForeColor = SystemColors.HighlightText;
                }
                else
                {
                    item.Selected = false;
                    item.BackColor = SystemColors.Window;
                    item.ForeColor = SystemColors.WindowText;
                    MessageBox.Show("Game title not found in library");
                }
            }
            if(f.gameList.SelectedItems.Count == 1)
            {
                f.gameList.Focus();
                f.titleText.Text = f.Game[f.gameList.SelectedItems[0].Index].gametitle;
                f.developerText.Text = f.Game[f.gameList.SelectedItems[0].Index].developer;
                f.publisherText.Text = f.Game[f.gameList.SelectedItems[0].Index].publisher;
                f.gameList.SelectedItems[0].Text = f.titleText.Text;
            }
        }
    }
class IndexChanged
    {
        public void selectedIndexChanged(Form1 f)
        {
            if(f.gameList.SelectedItems.Count == 1)
            {
                f.titleText.Text = f.Game[f.gameList.SelectedItems[0].Index].gametitle;
                f.developerText.Text = f.Game[f.gameList.SelectedItems[0].Index].developer;
                f.publisherText.Text = f.Game[f.gameList.SelectedItems[0].Index].publisher;
                f.platformCheckBox.CheckedItems.ToString() = f.Game[f.gameList.SelectedItems[0].Index].platform; //This is where it throws the error
            }
        }
    }
}

0 个答案:

没有答案