2016-08-30 113 views
0

我必須打印出一個表格文檔,每行由數字和文本列組成。文本列中的文本可能包含標識符,如1K2016-000345包含連字符。我使用Graphics.MeasureString和Graphics.Drawstring來確定在列中顯示文本所需的矩形的寬度和高度,因此它也可以是多行。不幸的是,有時候上面的標識符,如果它們是行中的最後一個詞,會被連字符包裹,這使標識符難以閱讀。Windows窗體Graphics.Drawstring避免連字符

有沒有辦法避免這種行爲?無論是標記爲整體的標識符還是連字符都不可包裝?

+0

如果數據「表格」,那麼它會是非常重要的放置自己列。如果你不這樣做,那麼專欄將不會排隊。除非你使用固定間距字體,嗯,呃。 –

+0

謝謝漢斯。我確實定位了列的位置,並使用了比例字體。該列表是一個包含運行號碼,日期和時間,類型,文檔標識符,說明和三個更多錢列的「Kassajournal」。一切都完全符合左/右對齊。只有在說明欄中,我有問題,文本有時比列的寬度要長,所以我必須將文本包裝到一個額外的行中。但是,如果描述包含帶有連字符的文檔ID,則它會在文檔ID中間連字符。 –

回答

1

您應該使用的Graphics.MeasureString()超負荷,需要一個StringFormat參數和設置的FormatFlags屬性,StringFormatStringFormatFlags.NoWrap

g.MeasureString(text, font, origin, new StringFormat(StringFormatFlags.NoWrap)); 
+0

謝謝你Rene。我試過你的建議,用NoWrap標誌來測量字符串。如果我使用該標誌進行打印,則只有文本的第一部分被打印出來,並在連字符處被切斷。 –

+0

@pb_SKAT我現在是afk,但我認爲還有另一個標誌'NoClip'可以解決這個問題。我會在明天進行檢查(這裏的utc + 1,我猜你也是一樣) –

+0

@pb_SKAT猜你也需要'DrawString'的相同標誌(不僅僅是'MeasureString') –