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

動的に作成したコンボボックスでTextChangedイベント

環境/言語:[Windows7 32bit C#2008 ]
分類:[.NET]

C#2008で以下のフォームを作成しています。

public Form1()
{
InitializeComponent();

ComboBox combo = new ComboBox()
{
Anchor = AnchorStyles.None,
DropDownStyle = ComboBoxStyle.DropDownList,
Margin = new Padding(3, 0, 3, 6),
Name = "_func_ComboBox" ,
Location = new Point(10, 30),
Size = new System.Drawing.Size(80, 20)
};

combo.Items.AddRange(new string[] { "aaaa", "bbbb", "cccc" });
combo.SelectedIndex = 0;
combo.TextChanged += new System.EventHandler(comboBox1_TextChanged);

this.Controls.Add(combo);
}

フォームロード時にコンボボックス(ドロップダウンリスト)を動的に作成し、
TextChangedイベントを追加しましたが、
デザイン上で作成した場合ではイベント発生する
条件であっても、動的に作成した場合はTextChangedイベントが働いてくれません。
動的に配置した場合はなにか制約があるのでしょうか?
DropDownListなComboBoxの場合、TextChangedは発生しなかったような。
■No32348に返信(Hongliangさんの記事)
> DropDownListなComboBoxの場合、TextChangedは発生しなかったような。

返信有難うございます。
デザイン上で作成した場合は、DropDownListであっても
TextChangedイベントは発生しているのは、当方で確認は行っています。
動的に作成した場合のみ、イベントが発生してくれないので解決方法を
模索しています。
あらほんとだ。
FormattingEnabledの値で挙動が変わるみたいですね。
// 既定値はfalseなのにデザイナの初期値はtrueという面倒なプロパティ。
.NET3.5ですが、同じ環境で実験してみました。

デザインで作成し、イベント発生することを確認。
デザイン時に生成されているコードを、
コンストラクタでコピペし、ComboBoxのオブジェクト生成と、
Controls.Addにてオブジェクトを登録するだけで
普通にイベント発生しました。

同じようにやってみては如何でしょうか?
たぶんどこかに差異があるはずです。
あ、HongLiangさんからすでにコメントあったんですね。
すみません。

質問者さんのコードに下記を追加することで
イベントが発生することを確認しました。

combo.FormattingEnabled = true;
■No32350に返信(Hongliangさんの記事)
> あらほんとだ。
> FormattingEnabledの値で挙動が変わるみたいですね。
> // 既定値はfalseなのにデザイナの初期値はtrueという面倒なプロパティ。

Hongliangさん、kikuさんありがとうございました。

FormattingEnabled を変更することで解決しました。
規定値が双方で異なっている落とし穴があったとは・・
解決済み!

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