根据 ComboBox 选择将特定 ListBox 控件的内容保存到文本文件
Saving content of particular ListBox control to text file depending on ComboBox selection
我的应用程序中有两个 ListBox 控件和一个用于将其保存到文本文件的按钮。但是我想 select 使用 ComboBox 将其中一个保存到文本文件中。以下代码说明了我正在尝试做的事情:
private void button4_Click(object sender, EventArgs e)
{
var ss = listBox1.Items;//first listbox
var sb = listBox2.Items;//second listbox
SaveFileDialog svl = new SaveFileDialog();
svl = saveFileDialog1;
svl.Filter = "txt files (*.txt)|*.txt";
if (svl.ShowDialog() == DialogResult.OK)
{
using (FileStream S = File.Open(saveFileDialog1.FileName, FileMode.CreateNew))
using (StreamWriter st = new StreamWriter(S))
foreach (string a in ss) // In here i want set which lisbox I want to save
st.WriteLine(a.ToString());
}
}
什么是解决问题的好方法?
如果您添加一个包含两个项目的组合框,Listbox1 和 Listbox2,以下代码将保存组合框中所选列表框中的项目。
如您所见,我添加了一个 items
类型为 ObjectCollection 的局部变量,然后使用 switch 语句将其分配给该变量。
private void button4_Click(object sender, EventArgs e)
{
ObjectCollection items = null;
switch (combobox1.Text) {
case "ListBox1":
items = listBox1.Items;
break;
case "ListBox2":
items = listBox2.Items;
break;
default:
throw new Exception("no selection");
break;
}
SaveFileDialog svl = new SaveFileDialog();
svl = saveFileDialog1;
svl.Filter = "txt files (*.txt)|*.txt";
if (svl.ShowDialog() == DialogResult.OK)
{
using (FileStream S = File.Open(saveFileDialog1.FileName, FileMode.CreateNew))
using (StreamWriter st = new StreamWriter(S))
foreach (string a in items) //the selected objectcollection
st.WriteLine(a.ToString());
}
如果您没有对列表框的引用,您可以将表单上的列表框动态添加到表单加载事件中的组合框,如下所示:
foreach(var ctl in this.Controls)
{
if (ctl is ListBox)
{
var lb = (ListBox) ctl;
this.comboBox1.Items.Add(lb.Name);
}
}
要在单击“保存”时找到正确的列表框,请将切换命令替换为这一行:
var items = ((ListBox) this.Controls[combobox1.Text]).Items;
您可能想检查 combobox1.Text 是否为空或空,但我将其留作 reader.
的练习
我的应用程序中有两个 ListBox 控件和一个用于将其保存到文本文件的按钮。但是我想 select 使用 ComboBox 将其中一个保存到文本文件中。以下代码说明了我正在尝试做的事情:
private void button4_Click(object sender, EventArgs e)
{
var ss = listBox1.Items;//first listbox
var sb = listBox2.Items;//second listbox
SaveFileDialog svl = new SaveFileDialog();
svl = saveFileDialog1;
svl.Filter = "txt files (*.txt)|*.txt";
if (svl.ShowDialog() == DialogResult.OK)
{
using (FileStream S = File.Open(saveFileDialog1.FileName, FileMode.CreateNew))
using (StreamWriter st = new StreamWriter(S))
foreach (string a in ss) // In here i want set which lisbox I want to save
st.WriteLine(a.ToString());
}
}
什么是解决问题的好方法?
如果您添加一个包含两个项目的组合框,Listbox1 和 Listbox2,以下代码将保存组合框中所选列表框中的项目。
如您所见,我添加了一个 items
类型为 ObjectCollection 的局部变量,然后使用 switch 语句将其分配给该变量。
private void button4_Click(object sender, EventArgs e)
{
ObjectCollection items = null;
switch (combobox1.Text) {
case "ListBox1":
items = listBox1.Items;
break;
case "ListBox2":
items = listBox2.Items;
break;
default:
throw new Exception("no selection");
break;
}
SaveFileDialog svl = new SaveFileDialog();
svl = saveFileDialog1;
svl.Filter = "txt files (*.txt)|*.txt";
if (svl.ShowDialog() == DialogResult.OK)
{
using (FileStream S = File.Open(saveFileDialog1.FileName, FileMode.CreateNew))
using (StreamWriter st = new StreamWriter(S))
foreach (string a in items) //the selected objectcollection
st.WriteLine(a.ToString());
}
如果您没有对列表框的引用,您可以将表单上的列表框动态添加到表单加载事件中的组合框,如下所示:
foreach(var ctl in this.Controls)
{
if (ctl is ListBox)
{
var lb = (ListBox) ctl;
this.comboBox1.Items.Add(lb.Name);
}
}
要在单击“保存”时找到正确的列表框,请将切换命令替换为这一行:
var items = ((ListBox) this.Controls[combobox1.Text]).Items;
您可能想检查 combobox1.Text 是否为空或空,但我将其留作 reader.
的练习