2011-08-02 2 views
3

일반적인 문제 일 것이 확실합니다. 일반적인 해결책이 있는지 모르겠습니다. 내 문제는 사용자가 GUI에서 여러 줄 텍스트 상자를보고있을 때 문제가 아니라 아래로 스크롤 할 수있는 경우입니다. 그러나 인쇄 할 때 특정 텍스트가 해당 텍스트 상자의 주어진 영역 아래쪽으로 가끔 가끔 끝납니다.여러 줄 텍스트 상자 입력을 제한하여 모든 내용을 인쇄 할 수 있도록 제한

사용자가 큰 글꼴을 선택할 수 없으므로 서식있는 텍스트 상자가 아니므로 페이지에서 벗어날 수 있습니다. 내가 =에 필요하면 그 신부를 십자가에 댑니다.)

그래서 저는 생각했습니다.

글자 수 제한을 사용하지만 캐리지를 여러 번 반환하는 경우 이는 맨 아래로 끝납니다.

또는 내가 구현하는 방법을 완전히 모르겠지만 잘 보이지 않는 '행'제한에 마지막으로

내가 결론을 내려왔다 당신이 말한 인쇄 할 때 여러 줄 텍스트 상자 당신이해야하는 입력 된 텍스트에 맞게 인쇄 된 문서의 영역을 확장하십시오. 이것이 가장 우아한 솔루션이라면 누구나 그러한 기능을 구현하기 위해 올바른 방향으로 나를 가리킬 수 있습니까?

사용자가 원하는만큼 입력 할 수있는 메모 필드를 생각해보십시오. 입력 된 모든 내용이 인쇄되도록하는 것이 좋습니다.

+1

인쇄 할 때이 문제를 해결하는 방법을 찾아야합니다. 인쇄가 제대로 작동하지 않기 때문에 사용자 기능을 제한하지 마십시오. – musefan

+0

사실,하지만 특히 글꼴 변경에 대한 아이디어를 다시 소개한다면 정의 된 영역이 인쇄를 위해 얼마나 커야할지 생각해보십시오. – Coops

+0

일관된 글꼴 크기로 좋은 효과를 내기 위해 Graphics.MeasureString()을 사용했지만 텍스트의 크기가 다른 경우 (서식있는 텍스트를 사용할 때처럼) 가장 좋은 방법은 확실하지 않습니다. – musefan

답변

1

yourTextBox.DrawToBitMap으로 전화 하시겠습니까? 화면에 표시되는 내용의 비트 맵을 만들 뿐이지 만 프린터 출력, 줄 레이아웃, 줄 바꿈, 프린터 글꼴, 여백, 방향, 페이지 매김 또는 인쇄 작업을 수행하지 않습니다.

텍스트를 프린터로 보내고 위에서 언급 한 모든 기능을 처리하려면 System.Drawing.Printing.PrintDocument 클래스를 사용해야하며 textBoxes가 필요로하는 모든 기능을 처리해야합니다.

0

어떻게 그리고 왜 WinForm을 인쇄하고 있습니까? 나는 이것이 당신의 질문에 대답하지 않는다는 것을 압니다. 그러나 WinForm을 문서로 인쇄하는 것은 이런 유형의 이슈를 가질 것이고, 더 많은 사용자에게 응용 프로그램을 공개 할 때 수정해야 할 더 많은 단점이 발생할 것이라는 것을 보증 할 수 있습니다.

반드시 양식을 인쇄해야하고 내가 제공 할 수있는 최상의 솔루션에 대한 TextBox의 콘텐츠를 제한하려면 글꼴을 고정 된 크기의 고정 너비 글꼴로 설정하고 사용자가 그것을 수정하십시오. TextBox에 몇 개의 문자가 들어갈 수 있는지 계산하고 그 값을 컨트롤의 MexLength으로 설정하십시오.

분명히 사용자는 한 문자를 사용하지만 한 줄 전체를 소비하는 return/enter 키를 누를 수 있습니다. 이 문제를 해결하려면 TextBox의 TextChange 이벤트를 줄 바꿈 문자를 처리하도록 변경했습니다. 텍스트에서 제거하거나 TextBox의 MaxLength 속성을 더 작고 적절한 값으로 업데이트 할 수 있습니다.

몇 가지 사소한 조정을 통해 내 권장 사항을 통해 원하는 것을 안전하게 얻을 수 있습니다. 그래도 나는 당신의 폼에 또 다른 인쇄 메커니즘을 찾아 볼 것을 강력히 권고한다.

책임지고 사용하십시오.

+0

조언 해 주셔서 감사드립니다. – Coops

관련 문제