[英]How to limit the length of each line in a multiline textbox on PowerPoint TaskPane using C#?
我已經在.Net 4.0上開發的PowerPoint VSTO加載項中創建了一個任務窗格。 在任務窗格上,我有一個文本框,用戶只需要輸入數字數據即可。 要求如下:
通過在每一行上鍵入一個數據,用戶可以輸入多個數字數據。 每個數據最多可以包含8個字符,包括:數字,小數和逗號。 如果一行超過8個字符,則應將其截斷為8個字符。
下面是我正在使用的代碼:
public void splitString(string[] strText)
{
string[] arr = txtEntryField.Lines;
for (int n = 0; n < arr.Length; n++)
{
if (arr[n].Length > 8)
{
arr[n] = arr[n].Substring(0, 8);
}
}
txtEntryField.Lines = arr;
if (txtEntryField.Lines.Length > 0)
{
txtEntryField.SelectionStart = txtEntryField.Text.Length;
}
}
我在txtEntryField_TextChanged事件上調用此方法。 當我快要到那兒時,我認為操作和用戶體驗都不太流暢。
更新了代碼,以使用戶無法在文本框中輸入字符。 這是通過以下代碼完成的:
void txtEntryField1_KeyPress(object sender, KeyPressEventArgs e)
{
const char Delete = (char)8;
var regex = new Regex(@"[^.,0-9\s]");
if (regex.IsMatch(e.KeyChar.ToString()) && e.KeyChar != Delete && e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
誰能幫助我提供更好的解決方案? 任何幫助都是最歡迎的。 謝謝。
這為我工作:
public void splitString(string[] strText)
{
string[] arr = txtEntryField.Lines;
for (int n = 0; n < arr.Length; n++)
{
if (arr[n].Length > 8)
{
arr[n] = arr[n].Substring(0, 8);
}
}
txtEntryField.Lines = arr;
if (txtEntryField.Lines.Length > 0)
{
txtEntryField.SelectionStart = txtEntryField.Text.Length;
}
}
同樣,以下代碼僅允許用戶輸入所需的字符:
void txtEntryField1_KeyPress(object sender, KeyPressEventArgs e)
{
const char Delete = (char)8;
var regex = new Regex(@"[^.,0-9\s]");
if (regex.IsMatch(e.KeyChar.ToString()) && e.KeyChar != Delete && e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.