DOBON.NET DOBON.NETプログラミング掲示板過去ログ

UserControl の TextChaged イベント が発生しない

環境/言語:[WinXP/VS2005]
分類:[.NET]

UserControlに、TextBoxを2つ貼り付けています。
その各TextBoxでTextChangedが発生した場合に、UserControlのTextChangedを発生させ、Form側でイベントを書きたいと思っています。

[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
  new public event EventHandler TextChanged
{
add { base.TextChanged += value; }
remove { base.TextChanged -= value; }
}

public コンストラクタ()
{
InitializeComponent();

this.TextChanged += new EventHandler(txtBox1_TextChanged);
this.TextChanged += new EventHandler(txtBox2_TextChanged);
}

この状態でUserControlをFormに貼り付け、TextChangedイベントに
記述をしているのですが、どうも実行されていないようです。

何か問題ありますでしょうか?

よろしくお願いします。
>   public コンストラクタ()
>  {
>       InitializeComponent();
> 
>       this.TextChanged += new EventHandler(txtBox1_TextChanged);
>       this.TextChanged += new EventHandler(txtBox2_TextChanged);
>   }
これは UserControl のコンストラクタですよね?
この記述だと、「自分の Text が変更されたときに txtBox1_TextChanged と
txtBox2_Changed を呼び出せ」という意味になってしまいます。
txtBox1 の Text 変更時に呼び出すのなら、txtBox1 の TextChanged イベントを
使わなくてはなりません。

あと、単純に TextChanged イベントを発生させるだけなら、
カスタムイベントなど不要で this.OnTextChanged を呼び出すだけで十分です。
txtBox1_TextChanged イベントハンドラの中で呼び出すことになります。
ありがとうございます。

とんでもない勘違いをしていました・・・

無事対応できました!

ありがとうございました(^-^

■No28065に返信(Hongliangさんの記事)
> > public コンストラクタ()
>> {
>> InitializeComponent();
>>
>> this.TextChanged += new EventHandler(txtBox1_TextChanged);
>> this.TextChanged += new EventHandler(txtBox2_TextChanged);
>> }
> これは UserControl のコンストラクタですよね?
> この記述だと、「自分の Text が変更されたときに txtBox1_TextChanged と
> txtBox2_Changed を呼び出せ」という意味になってしまいます。
> txtBox1 の Text 変更時に呼び出すのなら、txtBox1 の TextChanged イベントを
> 使わなくてはなりません。
>
> あと、単純に TextChanged イベントを発生させるだけなら、
> カスタムイベントなど不要で this.OnTextChanged を呼び出すだけで十分です。
> txtBox1_TextChanged イベントハンドラの中で呼び出すことになります。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板