簡體   English   中英

如何使用C#在PowerPoint TaskPane上限制多行文本框中每行的長度?

[英]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.

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