第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Visual Studio C# listview保存和加載問題

Visual Studio C# listview保存和加載問題

PHP
森林海 2024-01-20 21:16:30
我對 Visual Studio C# listview 項目有疑問,無法通過谷歌搜索找到解決方案。我是用帶有列表視圖的應用程序制作的,我可以添加、刪除、更新列表視圖項目。我使用以下代碼正確保存列表視圖到文件或從文件加載列表視圖: private void saveListViewItems(string path, ListView lv)    {        var delimeteredListviewData = new List<string>();        string delimeteredItems = string.Empty;        foreach (ListViewItem lvi in lv.Items)        {            foreach (ListViewItem.ListViewSubItem lvsi in lvi.SubItems)            {                    delimeteredItems += lvsi.Text + "#";            }            delimeteredListviewData.Add(delimeteredItems);        }        System.IO.File.WriteAllLines(path, delimeteredListviewData.ToArray());    }    private void loadListViewItems(string path, ListView lv)    {        foreach (string line in System.IO.File.ReadAllLines(path))        {            lv.Items.Add(new ListViewItem(line.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries)));        }    }問題是我已經激活了每個項目旁邊的復選框。我無法保存選中復選框的列表視圖項目。我想保存列表視圖并加載所選項目。謝謝
查看完整描述

3 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

像這樣的東西?:


        List<string> delimeteredItems = new List<string>();

        foreach (ListViewItem lvi in listView1.CheckedItems)

        {

            string     item= String.Join("#", lvi.SubItems.Cast<ListViewItem.ListViewSubItem>().Select(si=>si.Text));

            delimeteredItems.Add(item);

        }

        System.IO.File.WriteAllLines(@"c:\temp\lines.txt", delimeteredItems);


查看完整回答
反對 回復 2024-01-20
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

我已經管理該程序以使其正常工作。我對讀/寫文本文件的方式是錯誤的。現在我正在使用 ini-parser nuget。


將ini解析器安裝到項目中。然后:


使用 IniParser;


使用 IniParser.Model;


 private void saveListViewItems(string path, ListView lv)

    {

        int i = 0;

        string IPFrom;

        string IPFromval;

        string IPTO;

        string IPTOval;

        string Comment;

        string Commentval;

        string CheckState;

        string CheckStateval;

        int IPSectioncount;


        var parser = new FileIniDataParser();

        IniData data = parser.ReadFile(path);




                while ( i < lv.Items.Count) {


                    if ((lv.Items[i].Selected) || (lv.Items[i].Checked))

                    {

                        CheckStateval = "1";

                    }

                    else

                    {

                        CheckStateval = "0";

                    }


                CheckState = "";

                CheckState = "CheckState";

                CheckState += String.Join(CheckState, i);

                IPFromval = lv.Items[i].SubItems[0].Text;


                IPFromval = "";

                IPFrom = "IPFrom";

                IPFrom += String.Join(IPFrom, i);

                IPFromval = lv.Items[i].SubItems[0].Text;


                IPTOval = "";

                IPTO = "IPTO";

                IPTO += String.Join(IPTO, i);

                IPTOval = lv.Items[i].SubItems[1].Text;


                Commentval = "";

                Comment = "Comment";

                Comment += String.Join(Comment, i);

                Commentval = lv.Items[i].SubItems[2].Text;





                data["IP"][CheckState] = CheckStateval;

                data["IP"][IPFrom] = IPFromval;

                data["IP"][IPTO] = IPTOval;

                data["IP"][Comment] = Commentval;




                i++;

                }



                IPSectioncount = lv.Items.Count;

                data["IP"]["IPSectionCount"] = IPSectioncount.ToString();

                parser.WriteFile(path, data);



    }



    private void loadListViewItems(string path, ListView lv)

    {

        string IPFrom;

        string IPTO;

        string Comment;

        string CheckState;

        string IPSectioncount;

        string row="";




        var parser = new FileIniDataParser();

        IniData data = parser.ReadFile(path);


        IPSectioncount = data["IP"]["IPSectionCount"];

        int m = Int32.Parse(IPSectioncount);




        int i = 0;



        while ( i < m )

        {

            IPFrom = "";

            IPTO = "";

            Comment = "";

            row = "";



            IPFrom = "IPFrom";

            IPFrom += String.Join(IPFrom, i);

            IPFrom = data["IP"][IPFrom];



            IPTO = "IPTO";

            IPTO += String.Join(IPTO, i);

            IPTO = data["IP"][IPTO];



            Comment = "Comment";

            Comment += String.Join(Comment, i);

            Comment = data["IP"][Comment];


            CheckState = "CheckState";

            CheckState += String.Join(CheckState, i);

            CheckState = data["IP"][CheckState];


            row = String.Join(",",IPFrom,IPTO,Comment);



                            lv.Items.Add(new ListViewItem(row.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)));


                            if (CheckState == "1")

                            {

                                lv.Items[i].Checked = true;

                            }




                i++;





        }






    }



查看完整回答
反對 回復 2024-01-20
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

您需要保存更多信息,而不是僅保存字符串。您可以添加 IsChecked 值和字符串。您需要一個小的包裝類來將這兩個值作為屬性保存。


然后您可以使用序列化,它是一個術語,描述將對象轉換為可以存儲在磁盤上的內容的方法。


有很多格式可供選擇,但 Json 是一種很好的可讀格式。您可以通過 nuget 包管理器下載 Nuget 包 NewtonSoft.Json。


public class StoreListView

{

    public void StoreToDisk(string path, List<ItemDataHolder> list)

    {


        string theListInJsonFormat = JsonConvert.SerializeObject(list);


        File.WriteAllText(path, theListInJsonFormat);

    }

}


public class ItemDataHolder

{

    public string SomeValuesYouWantToSave { get; set; }

    public bool IsChecked { get; set; }

}


查看完整回答
反對 回復 2024-01-20
  • 3 回答
  • 0 關注
  • 265 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號