Usuário com melhor resposta
Como fazer quebra de linha numa impressão normal com PrintDocumment?

Pergunta
-
Uso um código, mas ele não faz quebra de linha e as observações de um richtextbox ultrapassam a margem. Como por um limite e fazer quebra de linha ao atingir esse limite? Numa folha A4
O Código é este:
Private Sub Ficha_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles Ficha.PrintPage Dim g As Graphics = e.Graphics 'Muda a fonte a ser impressa, na ordem: ("fonte", Tamanho, System.Drawing.GraphicsUnit.Point).Eu no lugar do tamanho, usei o comando Richtextbox1.text.font.size, para não mudar a formatação. Dim FonteMensagem As New Font("Arial", ObservacoesRichTextBox.Font.Size, System.Drawing.GraphicsUnit.Point) g.DrawString("ID: " & IDTextBox.Text & vbNewLine & "Nome: " & Nome_completoTextBox.Text & vbNewLine & "Data de nascimento: " & Data_nascimentoMaskedTextBox.Text & vbNewLine & "Telefone: " & TelefoneMaskedTextBox.Text & vbNewLine & "Celular: " & CelularMaskedTextBox.Text & vbNewLine & "RG: " & RGTextBox.Text & vbNewLine & "CPF: " & CPFMaskedTextBox.Text & vbNewLine & vbNewLine & "Endereço completo: " & EnderecoTextBox.Text & vbNewLine & "Cidade: " & CidadeTextBox.Text & vbNewLine & "Bairro: " & BairroTextBox.Text & vbNewLine & "CEP: " & CEPTextBox.Text & vbNewLine & "UF: " & UFMaskedTextBox.Text & vbNewLine & vbNewLine & "Email: " & EmailTextBox.Text & vbNewLine & vbNewLine & "Observações:" & vbNewLine & ObservacoesRichTextBox.Text, FonteMensagem, Brushes.Black, 40, 40) End Sub
Respostas
-
Você não deve usar diretamente a String pois antes você deve medi-la.
Veja : https://msdn.microsoft.com/pt-br/library/system.drawing.graphics.measurestring(v=vs.110).aspx
Então sugiro você colocar todo esse bloco em uma string primeiro:
Dim MinhaString As String = "ID: " & IDTextBox.Text & vbNewLine & "Nome: " & Nome_completoTextBox.Text & vbNewLine & "Data de nascimento: " & Data_nascimentoMaskedTextBox.Text & vbNewLine & "Telefone: " & TelefoneMaskedTextBox.Text & vbNewLine & "Celular: " & CelularMaskedTextBox.Text & vbNewLine & "RG: " & RGTextBox.Text & vbNewLine & "CPF: " & CPFMaskedTextBox.Text & vbNewLine & vbNewLine & "Endereço completo: " & EnderecoTextBox.Text & vbNewLine & "Cidade: " & CidadeTextBox.Text & vbNewLine & "Bairro: " & BairroTextBox.Text & vbNewLine & "CEP: " & CEPTextBox.Text & vbNewLine & "UF: " & UFMaskedTextBox.Text & vbNewLine & vbNewLine & "Email: " & EmailTextBox.Text & vbNewLine & vbNewLine & "Observações:" & vbNewLine & ObservacoesRichTextBox.Text,
e ai rodar a medição da string (método MeasureString) contra a largura da página para saber se vai caber, se não, usar a medida restante da página para fazer a quebra da String.
- Marcado como Resposta Marcos SJ quarta-feira, 25 de novembro de 2015 13:25
Todas as Respostas
-
Você não deve usar diretamente a String pois antes você deve medi-la.
Veja : https://msdn.microsoft.com/pt-br/library/system.drawing.graphics.measurestring(v=vs.110).aspx
Então sugiro você colocar todo esse bloco em uma string primeiro:
Dim MinhaString As String = "ID: " & IDTextBox.Text & vbNewLine & "Nome: " & Nome_completoTextBox.Text & vbNewLine & "Data de nascimento: " & Data_nascimentoMaskedTextBox.Text & vbNewLine & "Telefone: " & TelefoneMaskedTextBox.Text & vbNewLine & "Celular: " & CelularMaskedTextBox.Text & vbNewLine & "RG: " & RGTextBox.Text & vbNewLine & "CPF: " & CPFMaskedTextBox.Text & vbNewLine & vbNewLine & "Endereço completo: " & EnderecoTextBox.Text & vbNewLine & "Cidade: " & CidadeTextBox.Text & vbNewLine & "Bairro: " & BairroTextBox.Text & vbNewLine & "CEP: " & CEPTextBox.Text & vbNewLine & "UF: " & UFMaskedTextBox.Text & vbNewLine & vbNewLine & "Email: " & EmailTextBox.Text & vbNewLine & vbNewLine & "Observações:" & vbNewLine & ObservacoesRichTextBox.Text,
e ai rodar a medição da string (método MeasureString) contra a largura da página para saber se vai caber, se não, usar a medida restante da página para fazer a quebra da String.
- Marcado como Resposta Marcos SJ quarta-feira, 25 de novembro de 2015 13:25
-
Bom dia,
Por falta de retorno do usuário, esta thread será encerrada.
Caso seja necessário, por gentileza, abra uma thread nova.
AtenciosamenteMarcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.