需要帮助才能让我的 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!");
}
}
我需要帮助才能让我的 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!");
}
}