1

多数の ComboBoxItems を含む ComboBox があります。ユーザーが ComboBoxItem にマウスを置いたときにイベントを発生させたいと思います。これは私がこれまでに試したコードですが、イベントが発生していません。つまり、ブレークポイントを配置しても、イベントは入力されません。

private void cmbValue_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            ComboBox cmb = sender as ComboBox;
            cmb.Items.Clear();

            //Iterates through all virtual tables
            foreach (TableContainer table in listOpenUnjoinedTables)
            {
                ComboBoxItem item = new ComboBoxItem();
                item.MouseEnter += item_MouseEnter;

                if (table.IsVirtual == false)
                {
                    item.Content = "[" + table.TableDescription + "]";
                }
                else
                {
                    item.Content = "[" + table.View.Name + "]";
                }

                item.Tag = table;
                cmb.Items.Add(item);
            }
        }

 private void item_MouseEnter(object sender, MouseEventArgs e)
        {
            ComboBoxItem item = sender as ComboBoxItem;

            //Do task
        }
4

2 に答える 2

0

誤ってdesigner.csのイベントを削除しましたか?

于 2013-03-20T15:43:26.907 に答える
0

GotFocus イベントを試してください。これは、ユーザーがキーボードを使用して項目を選択した場合でも発生します。それがあなたがここで本当に望んでいることだと思います:)

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        var comboBoxItem1 = new ComboBoxItem();
        var comboBoxItem2 = new ComboBoxItem();

        comboBoxItem1.Content = new Button() { Content = "button1" };
        comboBoxItem1.GotFocus += (sender, args) => lbl1.Content = "1111";
        comboBoxItem2.Content = "222222";
        comboBoxItem2.GotFocus += (sender, args) => lbl1.Content = "2222";

        comboBox1.Items.Add(comboBoxItem1);
        comboBox1.Items.Add(comboBoxItem2);
    }
}

ここに画像の説明を入力

ここに画像の説明を入力

于 2013-03-20T13:44:30.623 に答える