2

我正在尝试使用 C# 使用 switch 语句选择列表框中的项目,但没有任何反应:

这是我当前的代码:

XAML

<ListBox x:Name="test" (XAML OMITED) SelectionChanged="test_SelectionChanged">
 <ListBoxItem Content="name 1" />

C#

 private void test_SelectionChanged(object sender,  System.EventArgs e)
    {
        switch (test.SelectedItem.ToString())
        {
            case "name 1":
                MessageBox.Show("X");
                break;
            case "name 2":
                MessageBox.Show("X");
                break;
            default:

                break;
        }

谢谢

4

2 回答 2

1

列表框是发送者对象,因此您可以像这样访问它。您只需要将发件人转换为列表框,然后您选择的项目是列表框项目,因此您可以转换它,然后您可以访问内容值。此外,当我创建我的 selectionchanged 事件处理程序时,它接受 SelectionChangedEventArgs e 而不是 System.EventArgs e,在 System.Windows.Controls 命名空间中找到 SelectionChangedEventArgs,它应该已经通过 using 语句导入到您的类中。

var mySender = (ListBox)sender;
swtich(((ListBoxItem)mySender.SelectedItem).Content.ToString()){

  case "name 1":
            MessageBox.Show("X");
            break;
  case "name 2":
            MessageBox.Show("X");
            break;
  default:
            break;
}
于 2013-07-22T14:17:54.323 回答
0
 private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            foreach (var selectedItem in e.AddedItems)
            {
                switch ((selectedItem as ListBoxItem).Content.ToString())
                {
                    case "name 1":
                        MessageBox.Show("X");
                        break;
                    case "name 2":
                        MessageBox.Show("y");
                        break;
                    default:

                        break;
                }
            }
        }
于 2013-07-22T14:31:44.697 回答