需要帮助才能让我的 Listbox.SeletectedIndex 正常工作

Need help to get my Listbox.SeletectedIndex to work properly

我需要帮助才能让我的 listbox.selecteditem 正常工作。 这是我的伪代码。

public Form1()
{
    if (x == 1)
    {
        if (this.ListBox1.SelectedIndex != 5 ||
            this.ListBox1.SelectedIndex != -1)
        {
            ListBox1.MouseDoubleClick += new MouseControlHandler(ListBox1_MouseDoubleClick); 
        } 
    }
    else 
    {
        //Do something else.
    }              
}

private void ListBox1_MouseDoubleClick(object sender, System.EventArgs e)
{
    int index = this.ListBox1.IndexFromPoint(e.Location);
    if (index != System.Windows.Forms.ListBox.NoMatches)
    {
        MessageBox.Show("Hello World!");
    }
}

现在我得到了检查x不为1的条件;双击不起作用,这正是我想要的。 当 x 为 1 时;我在列表框中添加了 10 个项目。当用户单击索引 =5 的项目时,我不希望用户看到 "Hello World!" 消息。 我无法让它工作。即使用户点击索引 = 5 的项目;该消息仍然弹出。我试过调试,但主弹出屏幕在调试期间没有打开。我只能看到 selectedindex = -1。真正的代码是巨大的。

这是执行此操作的正确方法吗?谢谢

问题是您在应该使用 && (AND) 时使用了 || (OR)。 让我们分解一下:当 index = 5 时,您不想发生任何事情。但是当 index = 5 时,index != -1 为 True,所以双击代码仍然被触发,因为 False OR True = True。另外,当x != 1时,需要取消订阅事件(或设置为null)。如果没有,一旦设置,有双击事件就会触发。

这是你想要的代码:

public Form1()
{
    if (x == 1 && this.ListBox1.SelectedIndex != 5 && this.ListBox1.SelectedIndex != -1)
    {
       ListBox1.MouseDoubleClick += new MouseControlHandler(ListBox1_MouseDoubleClick);
    else 
    {
        ListBox1.MouseDoubleClick = null;
    }              
}

private void ListBox1_MouseDoubleClick(object sender, System.EventArgs e)
{
    int index = this.ListBox1.IndexFromPoint(e.Location);
    if (index != System.Windows.Forms.ListBox.NoMatches)
    {
        MessageBox.Show("Hello World!");
    }
}