我有一個Windows窗體與窗體上的格式文本框控件。我想要做的是讓每行只接受32個字符的文本。在32個字符後,我希望文本流到下一行(我不想插入任何回車符)。 WordWrap屬性幾乎做到了這一點,除了它將所有輸入的文本移動到文本中的最後一個空格並將其全部移動。我只想在32個字符後整齊地包裝文本。我怎樣才能做到這一點?我正在使用C#。將連續文本中豐富的文本,但不換行它
回答
好吧,我已經找到一種方法來做到這一點(很多谷歌搜索和Windows API參考之後),我如果任何人在這裏張貼的解決方案永遠需要想出解決辦法。有沒有乾淨的.NET解決方案,但幸運的是,Windows API允許您覆蓋處理文字換行時調用的默認過程。首先,你需要導入以下DLL:
[DllImport("user32.dll")]
extern static IntPtr SendMessage(IntPtr hwnd, uint message, IntPtr wParam, IntPtr lParam);
然後,你需要定義這個常量:
const uint EM_SETWORDBREAKPROC = 0x00D0;
然後創建一個委託和事件:
delegate int EditWordBreakProc(IntPtr text, int pos_in_text, int bCharSet, int action);
event EditWordBreakProc myCallBackEvent;
然後創建我們的新功能處理文字換行(在這種情況下,我不希望它做任何事情):
private int myCallBack(IntPtr text, int pos_in_text, int bCharSet, int action)
{
return 0;
}
最後,在窗體的事件所示:
myCallBackEvent = new EditWordBreakProc(myCallBack);
IntPtr ptr_func = Marshal.GetFunctionPointerForDelegate(myCallBackEvent);
SendMessage(txtDataEntry.Handle, EM_SETWORDBREAKPROC, IntPtr.Zero, ptr_func);
如果您在富文本框中僅使用固定寬度的字體作爲文本,則可以使用MeasureString來計算32個字符所需的寬度,然後相應地調整富文本框寬度。這應該包裝在32個字符之內。
我一直在尋找到這個問題,我自己並發現一個非常簡單的方法來解決這個問題。您需要在TextBox或RichTextBox控件的Key_Down事件中放置一小段代碼。
確保Word Wrap和Multiline屬性都設置爲true,然後,您只需檢查KeyCode的按鍵。返回& Keycode.Enter。
象下面這樣: -
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
{
e.Handled = true;
}
}
這裏真正設置你的處理值,發回,我們處理的主要新聞事件的消息,並沒有任何反應。文本控件繼續使用Word Wrap並阻止回車。
希望這會有所幫助。
我認爲這個想法不是使用Word Wrap。我認爲如果一個單詞超過了32個字符的限制,那麼OP想要在單詞中間換行。 – Ben 2015-03-13 14:30:33
- 1. 存儲豐富的文本文檔
- 2. php - 如何將動作豐富的文本轉換爲純文本?
- 3. wso2 esb在xml中豐富文本
- 4. 在DataTable中顯示豐富文本
- 5. 在localizable.strings中添加豐富文本
- 6. 問題豐富的文本框的SharePoint
- 7. 在豐富的文本框控件中圍繞圖像文本
- 8. 豐富的文本編輯器爲textarea
- 9. Grails的豐富文本插件
- 10. 把豐富的文本框在.NET
- 11. 如何在豐富的文本框
- 12. Silverlight的豐富文本控件
- 13. mfc - 帶有豐富文本的MessageBox
- 14. 添加豐富的文本框在C#中的某一行文本
- 15. Python庫豐富HTML文本渲染
- 16. 使用django存儲豐富文本
- 17. 在豐富的文本框中,選擇一段文字
- 18. XPAGES - 使用getDocumentByUNID添加豐富文本中的文件
- 19. 將豐富的編輯文本保存到數據庫
- 20. 任何圖書館豐富文本轉換爲HTML
- 21. 將文件拖動到豐富的文本框中以讀取文件中的文本
- 22. 異步輸出到豐富的文本框,而代碼運行
- 23. 打印預覽與豐富的文本框Telerik的文檔
- 24. GWT SuggestBox:豐富的建議,而不是文本?
- 25. VB.NET富文本框換行字符
- 26. 解析在豐富的文本框中插入位置
- 27. 使用NLP測量文本中豐富的信息
- 28. Hot在電話中獲取單元格的豐富文本
- 29. 如何獲得豐富文本中點擊的圖像?
- 30. gridview控件能夠在WinForms中顯示豐富的文本
我使用Courier New字體,這是一個固定寬度的字體。然而,使用你的建議有點奏效,如果我將WordWrap屬性設置爲false,那麼我的文本框水平滾動,這是我不想要的。如果我將WordWrap設置爲true,那麼它將包含32個字符,但是它包裹了整個最後一個單詞,這是我不想要的。 – Icemanind 2010-10-15 20:46:02