VB.NET:射击的SelectedIndexChanged多次(VB.NET: SelectedI

2019-09-16 18:25发布

我想以编程方式的用户控件新数额不详添加到表单。 其中将每一个条目中包含的用户控件中的ComboBox中选定的时间增加。

问题是,SelectedIndexChanged事件火灾完全不正常。 有时两次,有时是3倍,等等,但从来没有一次。 不管有多少次我设置的组合框的selectedIndex为-1,它触发为0的SelectedIndex的至少一次有时Itemselected事件触发多次的SelectedIndexChanged插图中的事件。

InvoiceEntry.vb片段:

Public Event ItemSelected As EventHandler
Private Sub cboItem_SelectedIndexChanged(sender As System.Object, _
            e As System.EventArgs) Handles cboItem.SelectedIndexChanged
    RaiseEvent ItemSelected(Me, EventArgs.Empty)
End Sub

Invoice.vb片段:

Private numEntries As Integer = 1

Public Sub invEntry1_ItemSelected() Handles invEntry1.ItemSelected
    numEntries += 1

    Dim newEntry As InvoiceEntry = invEntry1
    Dim pt As Point = newEntry.Location
    pt.Y += 30

    newEntry.Location = pt
    newEntry.Name = "invEntry" + numEntries.ToString

    pnlEntries.Controls.Add(newEntry)

结束小组

我在一个完全丧失,什么是错的。 请让我知道如果你需要更多信息,我将监测这个线程,直到我或别人的数字出来。

Answer 1:

据我知道,当你添加新的组合框中选择的指数在这个时候改变(这是触发时第一次)。 它也将引发对你编程修改的值的时间。

如果你想生成控制用户选择后,从下拉列表框的东西尝试使用

ComboBox.SelectionChangeCommitted

http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectionchangecommitted.aspx



Answer 2:

与列表视图我有同样的问题。 我用这个:

if (listview.SelectedItems.Count > 0)
{
   //do something...
}


文章来源: VB.NET: SelectedIndexChanged firing multiple times