簡體   English   中英

C#如何保存包含多個對象的設置並將其綁定到列表框中的項目

[英]C# How do you save settings containing multiple objects and bind them to items in a listbox

我編寫了一個XML閱讀器,該閱讀器將XML轉換為平面文件或從XML文件中刪除選擇元素並保存該文件。

涉及以下控件:

listbox1 –包含客戶列表

comboBox1 –包含用於選擇“ .log”,“。txt”,“。XML”的下拉列表

txtDateFormat –包含日期格式,該格式因客戶而異

使用Settings.Default ...我已經測試了列表框中只有一位客戶的設置,並且可以很好地保存設置並在表單打開時重新加載它們。

現在面對挑戰,我已經添加了將其他客戶添加到listbox1並將其保存到數組的功能。 假設列表框中的每個客戶都需要保存不同的設置。 例如,

{Customer1:“ .log”,“ MM_dd_yyyy”} *

{Customer2:“ .txt”,“ yyyy_MM_dd”}

{Customer3:“ .log”,無日期格式}

我假設可以通過listbox1_SelectedIndexChanged進行控制,但是如何將每個客戶與其對每個客戶自己的獨立設置相關聯? 意味着,當我添加其他客戶並存儲屬性設置時,Customer1將具有不同的屬性設置,然后Customer2將具有不同的屬性設置,依此類推。 因此,基本上,當您單擊每個客戶時,您也會看到設置的更改,例如日期格式,組合框,參數等。為方便起見,我添加了“選項”窗口的屏幕截圖。

客戶1

客戶2

客戶3

private void lstBoxCustomer_SelectedIndexChanged(object sender, EventArgs e)
    {
        ListBox.SelectedObjectCollection selectedItems = new ListBox.SelectedObjectCollection(lstBoxCustomer);
        selectedItems = lstBoxCustomer.SelectedItems;

        if (lstBoxCustomer.SelectedIndex != -1)
        {
            for (int i = selectedItems.Count - 1; i >= 0; i--)
                lstBoxCustomer.Items.ToString();
            txtCustomerName.Text = lstBoxCustomer.SelectedItem.ToString();

            string FullCustomerName = lstBoxCustomer.SelectedItem.ToString();
            string SplitCustName = FullCustomerName.Split('(')[0];
            string SNTCodeSplit = FullCustomerName.Split('(', ')')[1];
            txtCustomerName.Text = SplitCustName;
            txtSNTCode.Text = SNTCodeSplit;
        }

        for (int i = 0; i < lstBoxCustomer.Items.Count; i++)
        {
            if (lstBoxCustomer.SelectedIndex == i)
            {
                if (Settings.Default.Setting_Default_File_Extension[i].ToString().Contains("log"))
                {
                    cmbFileExtension.SelectedIndex = 0; //Log 
                }
                else if (Settings.Default.Setting_Default_File_Extension[i].ToString().Contains("txt"))
                {
                    cmbFileExtension.SelectedIndex = 1; //Txt
                }
                txtDateFormat.Text = Settings.Default.Setting_Date_Format[i].ToString();
            }
        }
    }

您必須創建3個用戶設置字符串數組。 這個來幫助你。 此后應為您解決以下問題;

    private void Form1_Load(object sender, EventArgs e)
    {
        listBox1.Items.Add(Properties.Settings.Default.Customer[0]);
        listBox1.Items.Add(Properties.Settings.Default.Customer[1]);
        listBox1.Items.Add(Properties.Settings.Default.Customer[2]);
        //I recommend using a loop to add these
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        for (int i = 0; i < listBox1.Items.Count; i++)
        {
            if (listBox1.SelectedIndex == i)
            {
                if (Properties.Settings.Default.Extension[i].Contains("log"))
                {
                    comboBox1.SelectedIndex = 0; //Log 
                }
                else if (Properties.Settings.Default.Extension[i].Contains("txt"))
                {
                    comboBox1.SelectedIndex = 1; //Txt
                }
                txtDateFormat.Text = Properties.Settings.Default.DateFormat[i];
            }
        }
    }

我得到了結果的屏幕記錄: 結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM