5

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); 

理由はわかりません。

4

1 に答える 1

8

コードが正確でない限り、次のようにコードの定数変数に割り当てることはできません。

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」を使用して、フィルタリングするリストを定義します。

于 2011-03-31T03:05:38.357 に答える