1

そのため、.NET アプリケーションで「保存」ボタンを作成するのに苦労しています。私の調査によると、私はすべてを正しく行っているようです。この記事を主な情報源として参照しています: http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.aspx

以下は、C# での私のメソッド コードです。

private void save2(object A_0, EventArgs A_1)
{
    Stream stream = new Stream();
    savefile2 = new SaveFileDialog();
    savefile2.InitialDirectory = @"C:\Program Files\Folder\";
    savefile2.Filter = "Text files (*.txt)|*.txt|Word files (*.doc)|*.doc";
    savefile2.FilterIndex = 1;
    savefile2.FileName = "*.txt";
    savefile2.Title = "Save Box Text";
    savefile2.OverwritePrompt = true;
    if (savefile2.ShowDialog() == DialogResult.OK)
    {
        stream = savefile2.OpenFile();
        if (stream != null)
        {
            stream.Close();
        }
    }
}

プログラムを実行しているときに、[保存] ボタンをクリックしてダイアログ ボックスが開くかどうかを確認すると、次のエラーが表示されます。

「抽象クラスのインスタンスは作成できません。」

ただし、抽象クラスは使用していません。すべてのクラスは .NET フレームワーク内にあります。だから、私は立ち往生しています。どんな助けでも大歓迎です。

4

3 に答える 3

3

前の 2 人の投稿者が述べたように、Stream クラスは抽象的であるため new を呼び出すことはできません。参照用にコードのコンパイル バージョンを次に示します。

    private SaveFileDialog savefile2;
    private void save2(object A_0, EventArgs A_1)
    {
        savefile2 = new SaveFileDialog
                        {
                            InitialDirectory = @"C:\Program Files\Folder\",
                            Filter = "Text files (*.txt)|*.txt|Word files (*.doc)|*.doc",
                            FilterIndex = 1,
                            FileName = "*.txt",
                            Title = "Save Box Text",
                            OverwritePrompt = true
                        };
        if (savefile2.ShowDialog() == DialogResult.OK)
        {
            using (FileStream stream = File.Open(savefile2.FileName, FileMode.OpenOrCreate))
            {
                //do stuff
            }
        }
    }

ストリームのインスタンス化を using() {} ブロックでラップして、それらが適切に破棄されるようにすることをお勧めします。

于 2011-06-20T02:46:40.613 に答える
0

Streamクラスは抽象的で、 1行目でインスタンスを作成しようとしています。実際にそこで作成されたオブジェクトを使用することはないので、宣言で何も割り当てないか、割り当てnullてください。 .

于 2011-06-20T01:52:18.530 に答える
0

問題は抽象クラスであるため、その行をに変更しStreamたように構築できず、動作するはずです。Stream stream = new Stream();Stream stream;

于 2011-06-20T01:53:57.423 に答える