【问题标题】:ListBox when I select a value from list: why half time that's select 1st value as well with 2nd event?当我从列表中选择一个值时的 ListBox:为什么一半时间选择第一个值以及第二个事件?
【发布时间】:2013-09-10 01:14:30
【问题描述】:

正如它所说的那样:

  • 有一个列表框
  • 当我在中选择一个值时
  • 第一个 SelectedValueChanged 事件包含我点击的值
  • 有时会有第二个 SelectedValueChanged 事件包含列表中的第一个值

我发现它添加了那些代码:

这是我的设计器包含的内容:

    this.listBox1.SelectedValueChanged += 
new System.EventHandler(this.listBox1_SelectedValueChanged);

这是我的课程包含的内容:

public class myControl : UserControl
{

  private void listBox1_SelectedValueChanged(object sender, EventArgs e)
  {
     StackTrace st = new StackTrace(true);
  }                                    /// I put breakpoint that line to look at st
}

我看不到第二个事件的触发位置。在堆栈中有很多系统代码,没有什么与我自己的代码非常相关。但是我可以根据需要在这里过去。

我唯一没有真正掌握的是UserControl 上下文。也许可以解决这个问题。

有了这个,你知道为什么我点击一次时会接到两次电话吗?

King King的问题后编辑:

场景是:

  • 影响listBox1.DataSource调用SelectedValueChanged

    1. in listBox1_SelectedValueChanged 发件人: {SelectedItem = "1st value"} object {System.Windows.Forms.ListBox}
  • 点击listBox1 中的第三个​​值 调用两次SelectedValueChanged

    1. in listBox1_SelectedValueChanged 发件人: {SelectedItem = "3rd value"} object {System.Windows.Forms.ListBox}
    2. in listBox1_SelectedValueChanged 发件人: {SelectedItem = "1st value"} object {System.Windows.Forms.ListBox}
  • 之后只选择第一个值

【问题讨论】:

  • 你发了很多字,但我还是不明白你的问题到底是什么?您的意思是您只需在您的listBox 中选择1 值(单击1 次),然后SelectedValueChanged 被触发两次?或者您通过 2 次点击(或更多)选择相同的值,但 SelectedValueChanged 被触发两次(或更多)?
  • SelectedValueChanged 在我影响 DataSource 时被触发一次。然后首先单击列表中的任何值(即第三个值)会触发两次SelectedValueChanged。第一次调用包含第三个值,第二次调用包含第一个值。
  • 对于您的更新,我强烈怀疑您在SelectedValueChanged 事件处理程序中的代码可能会导致问题,在这种情况下,调试将使一切变得清晰。顺便说一句,如果您单击除the third item 之外的其他项目怎么办?无论如何,很明显,当您单击3rd item 时,它当然会触发SelectedValueChanged,但是出于某种原因,然后选择1st item 并触发SelectedValueChanged 一个更多时间,正如你所说,在选择了所有1st item(而不是3rd item)之后。
  • @KingKing “我强烈怀疑您在SelectedValueChanged 事件处理程序中的代码可能会导致问题”是的,我同意。我添加了这个以试图了解正在发生的事情。
  • @KingKing “如果你点击第三个项目以外的另一个项目怎么办?”完全相同的场景

标签: c# winforms user-controls listbox


【解决方案1】:

听起来您对 2 个或更多其他事件有疑问,您正在选择第三个元素并重新加载列表框或类似的事情。抱歉我目前还没有评论权,但是你能不能先选第一个再选第三个再选第一个,第二次选第一个后会得到双重事件吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    相关资源
    最近更新 更多