簡體   English   中英

在Winforms TextBox中引發OnTextChanged事件

[英]Raise a OnTextChanged event in winforms TextBox

我如何引發一個事件,該事件將為我的文本框控件調用OnTextChanged重寫的方法?

編輯:

private void thebox_TextChanged(object sender, FastColoredTextBoxNS.TextChangedEventArgs e)

當您發現需要嘗試直接調用事件時,通常表明您正在嘗試在事件方法或事件處理程序中填充更多邏輯。 調用OnTextChanged或直接調用事件處理程序不是一個好主意。 事件被設計為基於用戶交互來觸發,而不是在您希望看到其副作用時稱為正常方法。 實際上,從事件方法和所有事件處理程序中消除所有重大副作用並將它們移至單獨的方法中應該是一個設計目標。

最好的選擇是采用您的OnTextChanged方法中當前發生的邏輯,並將其放在另一個正確命名的方法中。 方法名稱“ OnTextChanged”表示除通知您文本已更改外,它什么也不做。 如果您需要做更多的工作,請將其放在自己的方法中(例如UpdateRelatedControls或其他可能的方法),然后從OnTextChanged事件中調用此新方法。 然后,您可以公開公開此新方法,並在需要時隨時調用它。

從后面的代碼引發該事件的唯一方法是更改​​TextBox的Text屬性。

參見http://msdn.microsoft.com/zh-cn/library/aa645739(v=vs.71).aspx 在此處輸入圖片說明

textchanged事件textchanged數字格式化為十進制格式,並帶有逗號。 這是C#中的代碼

private void textBox8_TextChanged(object sender, EventArgs e)

    {

        //Remove previous formatting, or the decimal check will fail 

        string value = String.Format("{0:0,0.00}", double.Parse(textBox8.Text));
 // "12,345.87"


        decimal ul;
        //Check we are indeed handling a number 
        if (decimal.TryParse(value, out ul))
        {
            //Unsub the event so we don't enter a loop 
            textBox8.TextChanged -= textBox8_TextChanged;
            //Format the text as currency 
            textBox8.Text = value.ToString();
            textBox8.TextChanged += textBox8_TextChanged;
        }

    }

暫無
暫無

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

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