none
PrintDocument.Printメソッドについて(MSDNの例題がビルドできない) RRS feed

  • 質問

  • Windows10で、Visual Studio Community 2017からC#を使っています。
    いろいろ例題をやろうとしているのですが、MSDNの以下の例題が、正常にビルドできません。
    https://msdn.microsoft.com/ja-jp/library/system.drawing.printing.printdocument.print%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    エラーの大半が「名前空間が見つからない」というものなのですが、名前が変わった(どこかの名前空間に移動した)のでしょうか?
    また、解決方法はあるのでしょうか?
    名前空間が変わったなら変わったでどう探すべきかも含めてわからず困っています。

    よろしくお願いいたします。

    2018年1月26日 11:13

回答

  • どのような手順を実施されたのでしょうか。
    サンプルコード自体には問題ないので、手順、あるいは手法の問題だと考えられます。

    手元で成功した手順

    1. C# の Windows フォーム アプリケーションで新規のプロジェクトを作成する。
    2. Form1.cs を削除する。
    3. Program.cs を開き、中身をすべて消してから、MSDN のサンプルコードを貼り付ける。
    4. プロジェクトのプロパティを開き、スタートアップオブジェクトに PrintingExample を設定する。
    • 回答としてマーク まるこめ 2018年1月27日 18:15
    • 回答としてマークされていない まるこめ 2018年1月27日 18:16
    • 回答としてマーク まるこめ 2018年1月27日 18:16
    2018年1月26日 12:15
    モデレータ
  • アセンブリ参照が足りていないのかもしれません。

    PrintDocument.Printメソッドが含まれているPrintDocumentクラスには

    名前空間:   System.Drawing.Printing
    アセンブリ:  System.Drawing (System.Drawing.dll 内)

    と記されています。新規プロジェクトとしてコンソールアプリケーションを選択した場合、このSystem.Drawingが参照されていません。
    # Azuleanさんの提示されたWindowsフォームアプリケーションの場合はSystem.Drawingが参照されています。

    コンソールアプリケーションであっても参照の追加から指定することで同様にコンパイルすることができます。

    • 回答としてマーク まるこめ 2018年1月27日 18:15
    • 回答としてマークされていない まるこめ 2018年1月27日 18:16
    • 回答としてマーク まるこめ 2018年1月27日 18:17
    2018年1月26日 13:16
  • コンソールアプリケーションであっても参照の追加から指定することで同様にコンパイルすることができます。

    サンプルは MessageBox も使っているので、コンソールアプリケーションで始める場合は System.Windows.Forms も必要ですね。
    • 回答としてマーク まるこめ 2018年1月27日 18:17
    2018年1月26日 13:42
    モデレータ
  • Azuleanさんの手順で問題無く、動きますね。

    ただ、コンソールアプリなので、引数の指定が必要とか、知らないと苦しい個所が若干。

    また、using の箇所までコピーしないと、自動生成コードでは、usingが不足してます。
     → これは、 Visual Studioの編集画面に 赤波線で警告されるので分かると思うのですが、、、。

    > 4. プロジェクトのプロパティを開き、スタートアップオブジェクトに PrintingExample を設定する。

    こちらは、 "3. Program.cs を開き..."ならば、必要無かったです。 そのまま、デバッグ実行。ただし、VS上でデバッグ実行の場合、別途、引数の指定が必要。 久々なので、方法を忘れてました。 (プロパティで指定)

    以上、参考までに。

    • 回答としてマーク まるこめ 2018年1月27日 18:16
    2018年1月27日 12:13

すべての返信

  • どのような手順を実施されたのでしょうか。
    サンプルコード自体には問題ないので、手順、あるいは手法の問題だと考えられます。

    手元で成功した手順

    1. C# の Windows フォーム アプリケーションで新規のプロジェクトを作成する。
    2. Form1.cs を削除する。
    3. Program.cs を開き、中身をすべて消してから、MSDN のサンプルコードを貼り付ける。
    4. プロジェクトのプロパティを開き、スタートアップオブジェクトに PrintingExample を設定する。
    • 回答としてマーク まるこめ 2018年1月27日 18:15
    • 回答としてマークされていない まるこめ 2018年1月27日 18:16
    • 回答としてマーク まるこめ 2018年1月27日 18:16
    2018年1月26日 12:15
    モデレータ
  • アセンブリ参照が足りていないのかもしれません。

    PrintDocument.Printメソッドが含まれているPrintDocumentクラスには

    名前空間:   System.Drawing.Printing
    アセンブリ:  System.Drawing (System.Drawing.dll 内)

    と記されています。新規プロジェクトとしてコンソールアプリケーションを選択した場合、このSystem.Drawingが参照されていません。
    # Azuleanさんの提示されたWindowsフォームアプリケーションの場合はSystem.Drawingが参照されています。

    コンソールアプリケーションであっても参照の追加から指定することで同様にコンパイルすることができます。

    • 回答としてマーク まるこめ 2018年1月27日 18:15
    • 回答としてマークされていない まるこめ 2018年1月27日 18:16
    • 回答としてマーク まるこめ 2018年1月27日 18:17
    2018年1月26日 13:16
  • コンソールアプリケーションであっても参照の追加から指定することで同様にコンパイルすることができます。

    サンプルは MessageBox も使っているので、コンソールアプリケーションで始める場合は System.Windows.Forms も必要ですね。
    • 回答としてマーク まるこめ 2018年1月27日 18:17
    2018年1月26日 13:42
    モデレータ
  • Azuleanさんの手順で問題無く、動きますね。

    ただ、コンソールアプリなので、引数の指定が必要とか、知らないと苦しい個所が若干。

    また、using の箇所までコピーしないと、自動生成コードでは、usingが不足してます。
     → これは、 Visual Studioの編集画面に 赤波線で警告されるので分かると思うのですが、、、。

    > 4. プロジェクトのプロパティを開き、スタートアップオブジェクトに PrintingExample を設定する。

    こちらは、 "3. Program.cs を開き..."ならば、必要無かったです。 そのまま、デバッグ実行。ただし、VS上でデバッグ実行の場合、別途、引数の指定が必要。 久々なので、方法を忘れてました。 (プロパティで指定)

    以上、参考までに。

    • 回答としてマーク まるこめ 2018年1月27日 18:16
    2018年1月27日 12:13