需要帮助以使我的Listbox.SeletectedIndex正常工作

时间:2019-07-02 22:30:21

标签: c# listbox

我需要帮助才能获得我的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个项目添加到列表框中。我不希望用户看到“ Hello World!”当用户单击索引为5的项目时出现此消息。 我无法使它正常工作。即使用户单击索引= 5的项目,也是如此;消息仍然弹出。我尝试调试,但是调试期间无法打开主弹出屏幕。我只能看到selectedindex = -1。真正的代码是巨大的。

这是正确的方法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

问题是您应该使用||(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!");
    }
}