我需要帮助才能获得我的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。真正的代码是巨大的。
这是正确的方法吗?谢谢。
答案 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!");
}
}