![](/img/trans.png)
[英]C#: How do you save a list of items like a Combobox to the .NET Settings file?
[英]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將具有不同的屬性設置,依此類推。 因此,基本上,當您單擊每個客戶時,您也會看到設置的更改,例如日期格式,組合框,參數等。為方便起見,我添加了“選項”窗口的屏幕截圖。
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.