0

テキストボックスコントロールのOnTextChangedオーバーライドメソッドを呼び出すイベントを発生させるにはどうすればよいですか?

編集:

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

3 に答える 3

2

イベントを直接呼び出そうとする必要がある場合は、通常、イベントメソッドまたはイベントハンドラーに多くのロジックを詰め込もうとしていることを示します。OnTextChangedを呼び出すか、イベントハンドラーを直接呼び出すことはお勧めできません。イベントは、ユーザーの操作に基づいてトリガーされるように設計されており、副作用を確認したいときに通常のメソッドとして呼び出されることはありません。実際、イベントメソッドとすべてのイベントハンドラーからすべての重大な副作用を取り除き、それらを別々のメソッドに移動することが設計目標である必要があります。

最善のオプションは、OnTextChangedメソッドで現在発生しているロジックを取得し、適切な名前の別のメソッドに配置することです。メソッド名「OnTextChanged」は、テキストが変更されたことを通知する以外は何もしないことを意味します。さらに作業を行う必要がある場合は、それを独自のメソッド(たとえば、UpdateRelatedControlsなど)に配置し、OnTextChangedイベントからこの新しいメソッドを呼び出します。その後、この新しいメソッドを公開して、いつでも呼び出すことができます。

于 2012-08-23T12:53:50.063 に答える
1

コードビハインドからそのイベントを発生させる唯一の方法は、TextBoxのTextプロパティに変更を加えることです。

http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspxを参照してください ここに画像の説明を入力してください

于 2012-08-23T12:50:25.713 に答える
1

イベント時にコンマを使用して数値を10進形式にフォーマットします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;
        }

    }
于 2012-09-29T15:45:01.853 に答える