C # - Печать формы - PullRequest
       48

C # - Печать формы

0 голосов
/ 18 мая 2010

Я использую код от MS до распечатайте форму , однако, похоже, что форма должна быть видимой с помощью Show / ShowDialog () для работы.

Я пытаюсьиспользуйте код для формы, которую я не хочу показывать.

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 18 мая 2010

Если вы хотите распечатать данные из формы относительно простым способом, вы можете попробовать этот способ вместо этого. Я использую этот метод, когда мне нужно напечатать что-то из формы. Это использует скрытый элемент управления WebBrowser и работает довольно хорошо.

Извините, пример взят из проекта C ++, но он хорошо конвертируется в C #.

private: System::Void printButton_Click(System::Object^  sender, System::EventArgs^  e) {
        StringBuilder^ html = gcnew StringBuilder();

        html->Append( "<html><head></head><body>" );
        html->Append( "<h1>Children Clocked In</h1>" );

        html->Append( "<table>" );
        html->Append( "<tr><td>Last Name</td><td>First Name</td><td>Classroom</td><td>Program</td><td>In Time</td></tr>" );
        for each ( DataGridViewRow^ row in children->SelectedRows )
        {
            html->AppendFormat( "<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td></tr>",
                row->Cells[2]->Value->ToString(), 
                row->Cells[3]->Value->ToString(), 
                row->Cells[4]->Value->ToString(), 
                row->Cells[5]->Value->ToString(), 
                Convert::ToDateTime(row->Cells[6]->Value).ToString("h:mm tt") );
        }
        html->Append( "</table>" );

        html->Append( "</body></html>" );

        WebBrowser^ webBrowser = gcnew WebBrowser();
        webBrowser->Visible = false;
        webBrowser->Parent = this;
        webBrowser->DocumentCompleted += gcnew System::Windows::Forms::WebBrowserDocumentCompletedEventHandler(this, &FormChildrenClockedIn::webBrowser1_DocumentCompleted);
        webBrowser->DocumentText = html->ToString();
     } 
private: System::Void webBrowser1_DocumentCompleted(System::Object^  sender, System::Windows::Forms::WebBrowserDocumentCompletedEventArgs^  e) {
        ((WebBrowser^)sender)->ShowPrintPreviewDialog();
        delete (WebBrowser^)sender;
     }
0 голосов
/ 19 мая 2010

Самый простой способ - просто открыть его где-нибудь за пределами экрана, как

this.Position=new Point(-100000,-100000);

распечатайте, а затем закройте.

(не забывайте о нескольких мониторах, поэтому я использовал такие большие цифры).

0 голосов
/ 18 мая 2010

Возможно, вы можете использовать DrawToBitmap метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...