【发布时间】: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- in
listBox1_SelectedValueChanged发件人:{SelectedItem = "1st value"} object {System.Windows.Forms.ListBox}
- in
-
点击
listBox1中的第三个值 调用两次SelectedValueChanged- in
listBox1_SelectedValueChanged发件人:{SelectedItem = "3rd value"} object {System.Windows.Forms.ListBox} - in
listBox1_SelectedValueChanged发件人:{SelectedItem = "1st value"} object {System.Windows.Forms.ListBox}
- in
之后只选择第一个值
【问题讨论】:
-
你发了很多字,但我还是不明白你的问题到底是什么?您的意思是您只需在您的
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