我有一个应用程序可以打开一个csv文件并将所有内容显示到格式化的datagridview中。从那里我有一个按钮,打开另一个包含一系列复选框的表单。复选框具有我们之前打开的csv文件的所有属性,并且用户应该能够根据他们想要的巫婆属性查询文件,然后保存文件。
例如,如果他们只想要一个显示带翅膀的动物的所有条目的文件,他们只选择翅膀复选框。从那里,您选择保存按钮,它应该保存文件。
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
const string filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
const string header = "Animal_Name,Hair,Feathers,Eggs,Milk,Airborne,Aquatic,Predator,Toothed,Backbone,Breathes,Venomous,Fins,Legs,Tail,Domestic,Catsize,Type";
StreamWriter writer = null;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
filter = saveFileDialog1.FileName;
writer = new StreamWriter(filter);
writer.WriteLine(header);
foreach (Animal animal in animalQuery)
{
writer.Write(animal);
}
writer.Close();
}
}
这是保存按钮的代码,但是下面有错误:
filter = saveFileDialog1.FileName;
writer = new StreamWriter(filter);
我不确定为什么。
答案 0 :(得分:6)
除非你的代码是准确的,否则你不能为你的代码分配一个常量变量:
filter = saveFileDialog1.FileName;
您将“过滤器”声明为常量变量:
const string filter =“CSV文件( .csv)| .csv |所有文件(。)| 。”;
试试:
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
string filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
saveFileDialog1.Filter = filter;
const string header = "Animal_Name,Hair,Feathers,Eggs,Milk,Airborne,Aquatic,Predator,Toothed,Backbone,Breathes,Venomous,Fins,Legs,Tail,Domestic,Catsize,Type";
StreamWriter writer = null;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
filter = saveFileDialog1.FileName;
writer = new StreamWriter(filter);
writer.WriteLine(header);
writer.Close();
}
使用SavefileDialog属性“Filter”来定义要过滤的列表。