簡體   English   中英

WinForms中每行的字符數和每個TextBox的行數

[英]Characters per line and lines per TextBox in WinForms

我正在嘗試創建一個文本框,該文本框將限制每行字符,如果達到此限制,則創建新行。 現在,我試圖在KeyUp中的SelectionStart上進行搶劫,並確定用戶是否在他應該轉到下一行的位置,然后我將他移到下一行,直到他達到特定行數限制為止。

對此的邏輯令人驚訝地復雜。 我必須查看行中的最后一件事是否是單詞,並且最后沒有分隔符,我需要移至下一行並與下一行合並,並檢查下一行是否不太長,以此類推。它不能很好地工作,這不足為奇。 再加上對字符串的太多操作,甚至與使用StringBuilder一樣快。

有沒有更簡單的方法可以執行這樣的操作?

如果視覺效果不是很關鍵,則可以自由輸入字符串。 然后在“保存”中,可以在循環中使用substring()方法來獲得所需的行長度,並根據需要插入“ \\ n”

您應該能夠在文本框的keyup事件中執行此操作:

string[] lines = textbox1.Text.Replace(Environment.Newline, "\n").Split('\n');
if (lines.Count > 10)
{
    // More than 10 lines. Show an error or something
    e.Handled = true;
    e.SuppressKeyPress = true;
    return
}

if (lines.Any(z => z.Length > 100))
{
    // More then 100 character on a line. Do Something
    e.Handled = true;
    e.SuppressKeyPress = true;
    return;
}

當然,將10行更改為所需的行數,將100行更改為所需的最大長度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM