コンボボックスで値を選択する場合と入力した場合のイベントを確認してみました。
テストプログラムソース
using System.Diagnostics;
namespace ComboBoxEventTest;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var panel = new Panel
{
Padding = new Padding(10),
Dock = DockStyle.Top,
Height = 64,
};
var cmb = new ComboBox
{
Dock = DockStyle.Fill,
};
var btn = new Button
{
Dock = DockStyle.Left,
Text = "追加",
};
cmb.Items.Add(@"C:\");
cmb.Items.Add(@"D:\");
cmb.Items.Add(@"E:\");
cmb.TextChanged += (e, s) => Debug.Print("TextChanged");
cmb.SelectedIndexChanged += (e, s) => Debug.Print("SelectedIndexChanged ");
cmb.SelectedValueChanged += (e, s) => Debug.Print("SelectedValueChanged ");
btn.Click += (s, e) =>
{
cmb.Text = "hoge";
};
panel.Controls.AddRange(new Control[]{cmb, btn});
Controls.AddRange(new Control[]{panel});
}
}
キーボード入力
TextChanged
TextChanged
TextChanged
abcと3文字入力するとTextChangeイベントも3回発生
コンボボックスで値を選択
TextChanged
SelectedValueChanged
SelectedIndexChanged
コンボボックスのTextプロパティの値を変更
TextChanged
確認できたこと
コンボボックスの値を3パターンで変更してみましたが、共通して発生したイベントはTextChangeでした。
ただし、キーボード入力の場合1文字ごとに発生していたので、無効な値をバリデーションでは除外する必要がありそうです。
コメント