none
Console Box RRS feed

  • 질문

  • 1. Console Box 에 나타나야 할 글자가 많습니다

    2.     string u = Console.ReadLine();

       (1) 위와 같은 항을 많이 쓰고

              if (u == "3")
                {
                    stringToPrint += xxx9;
                }

         (2) 또 위와 같이 if 항을 많이 쓰기 때문에      

         (3)  Console.Clear();
                Console.WriteLine(stringToPrint);

               위와 같은 항을 많이 사용하고 있습니다

    3.   string u = Console.ReadLine();

        이러한 형식의  string 을 모두 입력하고 난 후에는 Console Box 에 나타나야 할 글자가 모두 나타나지 않고

       후반부의 약 절반 정도만 Console Box 에 나타나고 앞쪽의 절반 정도는 나타나지 않습니다

    4. 그 원인을 몰라서 file 의 마지막 부분을 옮겨놓으니  검토하여 해결해 주시기 바랍니다

                System.Drawing.Printing.PrintDocument doc = new  System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);

                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.98).aspx

                doc.Print();
            }
            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;

                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(stringToPrint, font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);

                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(stringToPrint, font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }

                // Remove the portion of the string that has been printed.
                stringToPrint = stringToPrint.Substring(charactersOnPage);


                // Check to see if more pages are to be printed.
                e.HasMorePages = (stringToPrint.Length > 0);
            }

    2013년 3월 12일 화요일 오전 1:10

모든 응답

  • 안녕하세요?

    죄송하지만 질문이 잘 이해가 되지 않습니다.

    어떤걸 구현하시고 싶은지 구체적으로 설명 해주시면 답변

    드리기가 좀 더 쉬울 듯 합니다.

    2013년 3월 12일 화요일 오전 7:52
  • 안녕하세요.

    몇번을 정독해야 조금 이해가 가는군요.

    앞에 말씀하셨던 Consle Box 부분은 헷갈리기만할뿐 질문과는 상관이 없는것 같고 결론적으로는

    텍스트 내용(stringToPrint)을 읽어서 출력을 할려는데 텍스트 내용중에 앞부분은 일부 안나오고 뒷부분만 나온다는 말씀인것 같군요.

    출력하시는 방식은 텍스트를 읽어서 Graphic으로 크기를 측정해서 화면에 글자를 그림처럼 그리는 방식입니다.

    MeasureString부분 계산에서 Margin 부분이 계산이 안되는듯합니다.

    doc.DefaultPageSettings.Margins = margins;

    이부분을 주석처리하고 다시 테스트 해보시는게 좋을듯합니다.

    2013년 3월 12일 화요일 오전 8:15
  • 별도 질문올리신 글에 [응답] 버튼이 작동하질 않아 여기에 답변 남깁니다.

    게시물에 소스 넣으실때는 [코드블럭삽입] 기능이용하셔서 올리시면 문제 없을것 같습니다.

    한줄주석처리는 해당라인 앞에 // 를 넣으시면 됩니다.

    여러줄 주석처리는 /*  */ 이걸로 둘러싸시면 됩니다.

    결론은

    //doc.DefaultPageSettings.Margins = margins;

    이렇게 해보시고 테스트 해보세요.
    2013년 3월 14일 목요일 오전 7:07
  • 1) 답변 감사합니다

         1. string u = Console.ReadLine(); 와 같은 형식을 계속사용하여 나가는 중에

         중반부 정도까지는   Consol Box의 화면에 이상없이   인쇄할 내용이 나티니지만

        2.  string u = Console.ReadLine(); 와 같은 형식을  끝까지 다 입력하고 나면 앞부분의 절반

           정도가  나타나지 않고 뒷 부분의 절번 정도만 Consol Box 화면에 나타나는 것입니다

        3.  그러나, 인쇄해야 할 stringToPrint의 내용은 이상없이 모두 출력됩니다

        4. 밀씀해 주신 주석처리방법 //  doc.DefaultPageSettings.Margins = margins;

            으로  해결되지 않습니다

    2) 그래서  파일연결의  방법을 생각해 보았습니다 

       1.  파일을 3개를 만들고

       2.  첫번째 파일에서

           " string u = Console.ReadLine(); "을 기록해 넣고

       3. 두번째 파일에

            "  if (u == "1")
                {
                    stringToPrint += " 좋다"; 

                } " 를 기록해 넣고         

             세번째 파일에

            "  if (u == "2")
                {
                    stringToPrint += " 나쁘다";

                 } " 를 기록해 넣었을 경우  

         4. 만약 첫번째 파일에서 u 에 1을 입력하면,  두번째 파일에서  "좋다"가 인쇄되고

             만약 첫반째 파일에서 u 에 2를 입력하면 세번째 파일에서 "나쁘다"가 인쇄되도록 할려면 어떻게 해야 합니까

           즉, 파일 연결방법을 문의하는 것입니다

             다시 말하면 두번째 파일과 세번째 파일에서

                 첫번째 파일의 " string u = Console.ReadLine(); " 자동적으로 인식하게 하자는 것입니다

             이렇게 하기 위하여

                  첫번째 파일과 두번째 파일과 세번째 파일에 어떠한 문자들을 삽입해야 하는지요 ?

         5.  저가 사용하는 파일의 기본내용은 다음과 같습니다

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;

    namespace ConsoleApplication1
    {
        class Program
        {
            static string stringToPrint = "";
            static string strTemp = " ";

            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)
            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;

              // 여기서 strinng 과  if 항을 사용하고 있습니다

                System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);

                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.98).aspx

                doc.Print();
            }
            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;

                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(stringToPrint, font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);

                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(stringToPrint, font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }

                // Remove the portion of the string that has been printed.
                stringToPrint = stringToPrint.Substring(charactersOnPage);


                // Check to see if more pages are to be printed.
                e.HasMorePages = (stringToPrint.Length > 0);
            }

        }
    }


    2013년 3월 14일 목요일 오전 10:19
  • 아무리 읽어봐도 무슨 말인지 잘 모르겠습니다.

    일단 출력물은 정상인데 콘솔에 뿌려지는 내용이 잘린다는 내용인것 같은데요.

    올려주신 소스는 실행하면 프린터 출력만 하고 끝나는 소스인데 이 소스에서 제가 콘솔에 뭐가 뿌려지는지는 알 수가 없는 상태입니다.

    질문내용중 파일1,파일2,파일3이 무슨말씀인지도 모르겠습니다.

    그냥 간단한 내용과 함께 전체 소스를 압축해서 kumjaeyong@hotmail.com

    으로 보내주시면 한번 보겠습니다.

    수고하세요.

    2013년 3월 15일 금요일 오전 12:10
  • 1) 표현력이 부족하여 죄송하오며,  다시 한번 더 표현해 보겠습니다

    2) 콘솔의 문제를 다시 예를 들어 말씀드립니다

                Console.WriteLine("   숫자 입력 ( 男子=1,  女子=2 ) ");
                string u = Console.ReadLine();

                if u == "1")
                {
                    stringToPrint += "   태양 \r\n";
                }

                if (u == "2")
                {
                    stringToPrint += "   별 \r\n";
                }

            // ----------------------------------------------------

                Console.WriteLine("   숫자 입력 ( 根=1,    無根=2 ) ");
                string v = Console.ReadLine();

                if v == "1")
                {
                    stringToPrint += "   힘이 있다 \r\n";
                }

                if (v == "2")
                {
                    stringToPrint += "   힘이 없다 \r\n";
                }

                Console.WriteLine(stringToPrint);

    3) 위의  2)와 같는 형태가 계속 반복됩니다      

             기래서   " Console.WriteLine(stringToPrint); " 대신에

               " Console.Clear();
                 Console.WriteLine(stringToPrint); " 를  계속 사용합니다

    4) 그러므로  stringToPrint 의 내용이 콘솔에 차례대로 나타나면서,  나타나는 것이 증가 합니다. 그러나

       이느 시점에서 새로 나타나는 만큼,  맨 처음에 콘솔에 나타났던 부분(어느 정도)은 없어지는 것입니다.

       그래서 저가 생각하기에는 콘솔에 나타날 수 있는 분량이 한도가 있어서,

       그 한도를 넘는 부분는 처음부터 차례로 나타나지 않는 것인가 ,,, 라는 생각이 듭니다. 

       사라지더라도  끝까지 진행을 하면,  하여튼  인쇄는 이상 없이 전부 다 됩니다

    --------------------------------------------------------------

    5) 파일 연결을 말씀드립니다

       1.  바탕화면에 3개(A, B, C)의 파일을 만들어 놓고. 이 3개의 파일에 기본적인 사항은 동일하게 한다는 것입니다

       2.  A 파일에   " Console.WriteLine("   숫자 입력 ( 男子=1,  女子=2 ) ");
                             string u = Console.ReadLine();  과

                             Console.WriteLine("   숫자 입력 ( 根=1,    無根=2 ) ");
                              string v = Console.ReadLine(); 를  넣고

       3. B 파일에는  

             "  if u == "1")
                {
                    stringToPrint += "   태양 \r\n";
                }

                if (u == "2")
                {
                    stringToPrint += "   별 \r\n";
                }

                Console.WriteLine(stringToPrint);" 를  넣고

        4. C 파일에는 

             "  if v == "1")
                {
                    stringToPrint += "   힘이 있다 \r\n";
                }

                if (v == "2")
                {
                    stringToPrint += "   힘이 없다 \r\n";
                }

                Console.WriteLine(stringToPrint);"  를 넣었을 경우

       5.  A 파일에서 u 와 v 에 해당하는 숫자를 입력하는 하면

            B 파일과 C 파일에서 조건에 해당하는  "stringToPrint" 의 내용이 콘솔에 나타나도록 하고 싶은 것입니다

            그러면 자연히 인쇄는 되겠지요. 

       6. 이렇게 하기 위하여, 기본적 사항에 어떤 항을 추가하여야 하는지 궁굼합니다 

          기본적 사항은 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;

    namespace ConsoleApplication1
    {
        class Program
        {
            static string stringToPrint = "";
            static string strTemp = " ";

            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)
            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;

              // 여기서 strinng 과  if 항을 사용하고 있습니다

                System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);

                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.98).aspx

                doc.Print();
            }
            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;

                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(stringToPrint, font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);

                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(stringToPrint, font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }

                // Remove the portion of the string that has been printed.
                stringToPrint = stringToPrint.Substring(charactersOnPage);


                // Check to see if more pages are to be printed.
                e.HasMorePages = (stringToPrint.Length > 0);
            }

        }
    }

       7. 그래도 잘 이해가 안 되시면 다시 말씀해 주세요.  감사합니다

                                                                                                                                                                                                                                                                                                             

    2013년 3월 16일 토요일 오전 6:04
  • 여전히 파일1,파일2,파일3 은 뭘하는건지 이해할수가 없군요.

    소스코딩이 들어있는 파일은 사용할 수가 없을듯합니다. 소스코드는 컴파일이 되어야 사용할 수 있습니다.

    원하시는게 내용을 유추하여 아래 내용처럼 수정해봤습니다. 질문내용을 원하시는 만큼 추가하시고 마지막에 출력하시면 될것 같습니다.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;
    namespace ConsoleApplication1
    {
        class Program
        {
            //static string stringToPrint = "";
            //static string strTemp = " ";
            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)
            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;
                // 여기서 strinng 과  if 항을 사용하고 있습니다
                #region 1번질문
                Console.WriteLine("   숫자 입력 ( 男子=1,  女子=2 ) ");
                string u = Console.ReadLine();
                 if (u == "1")
                {
                    sbPrint.Append("   태양 \r\n");
                }
                else if (u == "2")
                {
                    sbPrint.Append("   별 \r\n");
                }
                #endregion
                #region 2번질문
                Console.Clear();
                Console.WriteLine(sbPrint.ToString());
                Console.WriteLine("   숫자 입력 ( 根=1,    無根=2 ) ");
                string v = Console.ReadLine(); 
                if (v == "1")
                {
                    sbPrint.Append("   힘이 있다 \r\n");
                }
                else if (v == "2")
                {
                    sbPrint.Append("   힘이 없다 \r\n");
                }
                #endregion
                Console.Clear();
                Console.WriteLine(sbPrint.ToString());
                //출력하는 부분
                System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.98).aspx
                doc.Print();
            }
            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;
                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters 
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(sbPrint.ToString(), font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);
                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(sbPrint.ToString(), font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }
                // Remove the portion of the string that has been printed.
                sbPrint = new StringBuilder(sbPrint.ToString().Substring(charactersOnPage));
                // Check to see if more pages are to be printed.
                e.HasMorePages = (sbPrint.Length > 0);
            }
        }
    }

    2013년 3월 19일 화요일 오전 5:27
  • 1. 파일연결에 대하여 다시 말씀드립니다

    2. 파탕화면에 3개의 아이콘을 만들고,  그 3개 아이콘의 파일을 각각 파일 1, 파일 2, 파일 3 이라고 합시다

    3. 파일 1 은 다음과 같이 합니다

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;

    namespace ConsoleApplication1
    {
        class Program
        {
            static string stringToPrint = "";
            static string strTemp = " ";

            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)
            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;
                Console.WriteLine("   ");

                Console.WriteLine("   숫자 입력 ( 男子=1,  女子=2 )      ");
                string u = Console.ReadLine();

                Console.WriteLine("   숫자 입력 ( 根=1,  無根=2 )      ");

                string v = Console.ReadLine();

                 System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);

                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.100).aspx

                doc.Print();
            }
            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;

                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(stringToPrint, font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);

                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(stringToPrint, font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }

                // Remove the portion of the string that has been printed.
                stringToPrint = stringToPrint.Substring(charactersOnPage);


                // Check to see if more pages are to be printed.
                e.HasMorePages = (stringToPrint.Length > 0);
            }

        }
    }

    4,  파일 2는 다음과 같습니다

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;

    namespace ConsoleApplication1
    {
        class Program
        {
            static string stringToPrint = "";
            static string strTemp = " ";

            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)
            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;
                Console.WriteLine("   ");

     

                 if (u == "1")
               
    {
                    sbPrint
    .Append("   태양 \r\n");
               
    }
               
    if (u == "2")
               
    {
                    sbPrint
    .Append("   별 \r\n");
               
    }

     

                 System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);

                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.100).aspx

                doc.Print();
            }
            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;

                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(stringToPrint, font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);

                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(stringToPrint, font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }

                // Remove the portion of the string that has been printed.
                stringToPrint = stringToPrint.Substring(charactersOnPage);


                // Check to see if more pages are to be printed.
                e.HasMorePages = (stringToPrint.Length > 0);
            }

        }
    }

    5.  파일 3은 다음과 같이 합니다

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;

    namespace ConsoleApplication1
    {
        class Program
        {
            static string stringToPrint = "";
            static string strTemp = " ";

            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)
            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;
                Console.WriteLine("   ");

                if (v == "1")

                {
                    sbPrint
    .Append("   힘이 있다 \r\n");
               
    }
               
    if (v == "2")
               
    {
                    sbPrint
    .Append("   힘이 없다 \r\n");
               
    }

                 System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);

                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.100).aspx

                doc.Print();
            }
            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;

                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(stringToPrint, font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);

                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(stringToPrint, font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }

                // Remove the portion of the string that has been printed.
                stringToPrint = stringToPrint.Substring(charactersOnPage);


                // Check to see if more pages are to be printed.
                e.HasMorePages = (stringToPrint.Length > 0);
            }

        }
    }

    6.  파일 1 에서 u 와 v 에 각각 1 이나 2를 입력하면  

        자동적으로  파일 2 와 파일  3에서 그 결과가 나타나도록 하고자 하는 것입니다

    2013년 3월 20일 수요일 오전 4:04
  • 파일1,2,3 이 무슨말인가 했네요. 아직 의도는 이해가 가지 않지만 하시고자하는 데로 답변해드리자면

    실행파일1 = ConsoleApplication1.exe

    실행파일2 = ConsoleApplication2.exe

    실행파일3 = ConsoleApplication3.exe

    이라고 가정하면(위 namespace가 모두 ConsoleApplication1 이니 2,3으로 변경하셔야겠습니다.)

    1. ConsoleApplication1.exe 를 실행하여 u="1" , v="2" 를 입력받고

    2. ConsoleApplication2.exe 를 실행하여 u="1" 입력받은 값을 전달하고

    3. ConsoleApplication3.exe 를 실행하여 v="2" 입력받은 값을 전달하고자

    하시는것 같습니다.

    여전히 첫번째 실행파일에 프린터 출력이 왜 들어가는지는 알 수가 없군요.

    아래와 같이 해보세요.

    실행파일1

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.Clear(); Console.WindowWidth = 124; Console.WriteLine(" 숫자 입력 ( 男子=1, 女子=2 ) "); string u = Console.ReadLine(); Console.WriteLine(" 숫자 입력 ( 根=1, 無根=2 ) "); string v = Console.ReadLine(); //입력받은 파라미터로 프로그램 실행 //실행파일2 실행하고 u를 파라미터로 전달 (실행파일1과 같은폴더에 있다고 가정) System.Diagnostics.Process.Start(System.Environment.CurrentDirectory + "\\ConsoleApplication2.exe", u); //실행파일3 실행하고 v를 파라미터로 전달 (실행파일1과 같은폴더에 있다고 가정) System.Diagnostics.Process.Start(System.Environment.CurrentDirectory + "\\ConsoleApplication3.exe", v); } } }

    //실행파일2

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; namespace ConsoleApplication2 { class Program { //static string stringToPrint = ""; //static string strTemp = " "; private static StringBuilder sbPrint = new StringBuilder(); static void Main(string[] args) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.Clear(); Console.WindowWidth = 124; // 여기서 strinng 과 if 항을 사용하고 있습니다 #region 1번질문 string u = args[0]; if (u == "1") { sbPrint.Append(" 태양 \r\n"); } else if (u == "2") { sbPrint.Append(" 별 \r\n"); } #endregion Console.WriteLine(sbPrint.ToString()); //출력하는 부분 System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument(); doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage); //margins, in hundredths of an inch, System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60); doc.DefaultPageSettings.Margins = margins; //... additionally: // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.98).aspx doc.Print(); } //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int charactersOnPage = 0; int linesPerPage = 0; using (Font font = new Font("MS Sans Serif", 10)) { // Sets the value of charactersOnPage to the number of characters // of stringToPrint that will fit within the bounds of the page. e.Graphics.MeasureString(sbPrint.ToString(), font, e.MarginBounds.Size, StringFormat.GenericTypographic, out charactersOnPage, out linesPerPage); // Draws the string within the bounds of the page e.Graphics.DrawString(sbPrint.ToString(), font, Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic); } // Remove the portion of the string that has been printed. sbPrint = new StringBuilder(sbPrint.ToString().Substring(charactersOnPage)); // Check to see if more pages are to be printed. e.HasMorePages = (sbPrint.Length > 0); } } }

    실행파일3
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Drawing;
    namespace ConsoleApplication3
    {
        class Program
        {
            //static string stringToPrint = "";
            //static string strTemp = " ";
            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)
            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;
                // 여기서 strinng 과  if 항을 사용하고 있습니다
                #region 2번질문
                string v = args[0];
                if (v == "1")
                {
                    sbPrint.Append("   힘이 있다 \r\n");
                }
                else if (v == "2")
                {
                    sbPrint.Append("   힘이 없다 \r\n");
                }
                #endregion
                Console.WriteLine(sbPrint.ToString());
                //출력하는 부분
                System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.98).aspx
                doc.Print();
            }
            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;
                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters 
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(sbPrint.ToString(), font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);
                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(sbPrint.ToString(), font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }
                // Remove the portion of the string that has been printed.
                sbPrint = new StringBuilder(sbPrint.ToString().Substring(charactersOnPage));
                // Check to see if more pages are to be printed.
                e.HasMorePages = (sbPrint.Length > 0);
            }
        }
    }


    • 답변으로 제안됨 Sungman KOMVP 2013년 3월 28일 목요일 오전 2:33
    2013년 3월 20일 수요일 오전 5:56
  • 1. 답변 대단히 감사합니다.

    2.  안내해 주신대로 아래와 같이 파일을 만들었습니다

     1) 파일 1

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;
    namespace ConsoleApplication1
    {
        class Program
        {

            //static string stringToPrint = "";
            //static string strTemp = " ";

            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)

            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;
                Console.WriteLine("   숫자 입력 ( 男子=1,  女子=2 ) ");
                string u = Console.ReadLine();
                Console.WriteLine("   숫자 입력 ( 根=1,    無根=2 ) ");
                string v = Console.ReadLine();
                //입력받은 파라미터로 프로그램 실행
                //실행파일2 실행하고 u를 파라미터로 전달 (실행파일1과 같은폴더에 있다고 가정)
                System.Diagnostics.Process.Start(System.Environment.CurrentDirectory + "\\ConsoleApplication2.exe", u);
                //실행파일3 실행하고 v를 파라미터로 전달 (실행파일1과 같은폴더에 있다고 가정)
                System.Diagnostics.Process.Start(System.Environment.CurrentDirectory + "\\ConsoleApplication3.exe", v);

                //출력하는 부분
                System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.98).aspx
                doc.Print();
            }
            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;
                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(sbPrint.ToString(), font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);
                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(sbPrint.ToString(), font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }
                // Remove the portion of the string that has been printed.
                sbPrint = new StringBuilder(sbPrint.ToString().Substring(charactersOnPage));
                // Check to see if more pages are to be printed.
                e.HasMorePages = (sbPrint.Length > 0);
            }
        }
    }

     2) 파일 2

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Drawing;
    namespace ConsoleApplication2
    {
        class Program
        {
            //string stringToPrint = "";
            //static string strTemp = " ";
            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)
            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;
                // 여기서 strinng 과  if 항을 사용하고 있습니다
                #region 1번질문
                string u = args[0];
                if (u == "1")
                {
                    sbPrint.Append("   태양 \r\n");
                }
                else if (u == "2")
                {
                    sbPrint.Append("   별 \r\n");
                }

                #endregion

                Console.WriteLine(sbPrint.ToString());
                //출력하는 부분
                System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.98).aspx
                doc.Print();
            }

            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;
                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(sbPrint.ToString(), font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);
                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(sbPrint.ToString(), font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }
                // Remove the portion of the string that has been printed.
                sbPrint = new StringBuilder(sbPrint.ToString().Substring(charactersOnPage));
                // Check to see if more pages are to be printed.
                e.HasMorePages = (sbPrint.Length > 0);
            }
        }
    }

     3) 파일 3

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Drawing;
    namespace ConsoleApplication3
    {
        class Program
        {
            //static string stringToPrint = "";
            //static string strTemp = " ";
            private static StringBuilder sbPrint = new StringBuilder();
            static void Main(string[] args)
            {
                Console.BackgroundColor = ConsoleColor.White;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Clear();
                Console.WindowWidth = 124;
                // 여기서 strinng 과  if 항을 사용하고 있습니다
                #region 2번질문
                string v = args[0];
                if (v == "1")
                {
                    sbPrint.Append("   힘이 있다 \r\n");
                }
                else if (v == "2")
                {
                    sbPrint.Append("   힘이 없다 \r\n");
                }

                #endregion
                Console.WriteLine(sbPrint.ToString());
                //출력하는 부분
                System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
                doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
                //margins, in hundredths of an inch,
                System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(80, 60, 60, 60);
                doc.DefaultPageSettings.Margins = margins;
                //... additionally:
                // http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.margins(v=VS.98).aspx
                doc.Print();
            }

            //example from http://msdn.microsoft.com/en-us/library/cwbe712d.aspx, changed
            private static void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;
                using (Font font = new Font("MS Sans Serif", 10))
                {
                    // Sets the value of charactersOnPage to the number of characters
                    // of stringToPrint that will fit within the bounds of the page.
                    e.Graphics.MeasureString(sbPrint.ToString(), font,
                     e.MarginBounds.Size, StringFormat.GenericTypographic,
                     out charactersOnPage, out linesPerPage);
                    // Draws the string within the bounds of the page
                    e.Graphics.DrawString(sbPrint.ToString(), font, Brushes.Black,
                     e.MarginBounds, StringFormat.GenericTypographic);
                }
                // Remove the portion of the string that has been printed.
                sbPrint = new StringBuilder(sbPrint.ToString().Substring(charactersOnPage));
                // Check to see if more pages are to be printed.
                e.HasMorePages = (sbPrint.Length > 0);
            }
        }
    }

    4. 파일 1 을 "디버그"실행하면  '애러' 가 발생하는데,  그 내용은

      파일 1의   "System.Diagnostics.Process.Start(System.Environment.CurrentDirectory +      "\\ConsoleApplication2.exe", u); " 에 노란 색이 나타나고

     애러 메제지에는 "Win 32 Exception  이 처리되지 않았습니다 " (지장돤 파일을 찾을 수 없습니다) "  나타납니다

    5. 혹시 저가  잘못한 부분이 있는 것입니까 ?

    • 답변으로 제안됨 Sungman KOMVP 2013년 3월 28일 목요일 오전 2:32
    • 답변으로 제안 취소됨 Sungman KOMVP 2013년 3월 28일 목요일 오전 2:33
    2013년 3월 20일 수요일 오전 10:12
  • 주석에도 달아놓았듯이..(실행파일1과 같은폴더에 있다고 가정)

    ConsoleApplication1.exe를 실행할때

    빌드된 ConsoleApplication2.exe, ConsoleApplication3.exe 파일이 바탕화면이든 어디든

    같은 폴더에 있어야 합니다.

    ConsoleApplication2, ConsoleApplication3를 먼저 빌드하시고 생성된 ConsoleApplication2.exe, ConsoleApplication3.exe 를 ConsoleApplication1.exe와 같은 폴더에 카피하시고 실행하시면 됩니다.

    2013년 3월 21일 목요일 오전 3:13
  •  1. 감사합니다

     2. 말씀하신 방법을 어떻게 하는 것인지 잘 모르겠습니다

     3. "ConsoleApplication2, ConsoleApplication3를 먼저 빌드하시고 "에서 빌드를 어떻게 합니까 ?

     4. " 생성된 ConsoleApplication2.exe, ConsoleApplication3.exe 를" 에서 어떠한 것이 생성됩니까?

     5. " ConsoleApplication1.exe와 같은 폴더에 카피하시고 "에서 카피는 어떻게 하는 것입니까 ?

     6. 파탕화면에는 '파일 1", "파일 2" "파일 3" 이라는 3개의 아이콘이 있습니다

    2013년 3월 22일 금요일 오전 10:31
  • 1. 응답이 없어서 다시 질문합니다

    2.  "같은 폴더에 있어야 합니다"  같은 폴더에 있어야 한드는 것이 무엇인지 잘 모르계습니다

    3.  "같은 폴더에 카피하시고 실행하시면 됩니다." 에서 같은 폴더에 카피한다면 결국  

       ConsoleApplication1 과  ConsoleApplication2 를 하나로 만든다는 결과가 되고

       ConsoleApplication1  과 ConsoleApplication3 가 하나의 파일이 된다는 의미가 아닌지요 !

      그렇다면 파일을 분리하여 연결할 필요가 없는 것이 아닙니까 ?

    2013년 3월 28일 목요일 오전 9:44