2011-08-02 69 views
3

我確定這是一個常見問題,我不知道是否有共同的解決方案。我的問題是當用戶在GUI中查看多行文本框時,他們只能向下滾動,而不是問題。但是,當我來打印時,某些文本偶爾會以該文本框的特定區域的底部結束。限制多行文本框輸入以便打印所有內容

我們會保持簡單,並說它不是一個富文本框,所以用戶不能選擇一個更大的字體,因此可能會離開頁面。嗯嗯交叉新娘,如果我需要=)

所以我考慮;

使用字符限制,但如果你只是返回馬車多次,這將結束了底部。

還是一個「行」的限制,我不是很確定如何實現,但似乎沒有任何的權利

最後我來的結論是,在打印時說多行文本框,你必須只需展開打印文檔上的區域以適應輸入的任何文本。如果這是最優雅的解決方案,任何人都可以指引我實現這一功能的正確方向嗎?

想象一個便箋字段,用戶可以儘可能多地輸入他們想要的內容,其目的是確保打印輸入的內容。

+1

你一定要找到一種方法來迎合這一點在印刷。不要因爲您的打印工作不正確而限制用戶功能。 – musefan

+0

事實上,特別是如果我們重新介紹被更改字體的想法,您如何計算定義的區域應該用於打印多大? – Coops

+0

我已經使用Graphics.MeasureString()來獲得一致的字體大小的良好效果,但不確定最好的方式,如果相同的文本有不同的大小(如你可能會用豐富的文本) – musefan

回答

1

你打電話給yourTextBox.DrawToBitMap?所有這些都會創建一個顯示在屏幕上的位圖,它不會執行打印機輸出,行佈局,換行符,打印機字體,邊距,方向,分頁或其他任何與打印有關的操作。

如果你想發送文本到打印機,處理上面提到的所有功能,你將不得不使用System.Drawing.Printing.PrintDocument類,並處理打印機需要文本框爲你做的所有事情。

0

如何以及爲什麼要打印WinForm?我知道這並不回答你的問題,但打印一個WinForm作爲一個文檔將會有這些類型的問題,我可以保證,當你釋放你的應用程序給更多的用戶時,會出現更多的怪癖,需要修復。

如果您絕對必須打印表單,並且您希望限制TextBox中的內容,那麼我可以提供的最佳解決方案是強制字體爲固定寬度的固定寬度字體,並且用戶不能修改它。計算在TextBox中可容納多少個字符,並將該值設置爲控件上的MexLength

很顯然,用戶可以按回車/回車鍵來使用一個字符,但會消耗一整行。要解決此問題,請更改TextBox的TextChange事件以處理換行符 - 您可以從文本中去除它,或者將TextBox的MaxLength屬性更新爲更小,適當的值。

可能有一些小的調整,明顯的調整我的建議應該安全地得到你想要的。不過,我強烈建議您爲表單尋找另一種打印機制。

使用需要您自擔風險。

+0

感謝您的建議 – Coops