2

プログラムで不特定の量の新しいUserControlをフォームに追加しようとしています。UserControl内に含まれるComboBoxでエントリが選択されるたびに1つ追加されます。

問題は、SelectedIndexChangedイベントが完全に不規則に発生することです。時には2回、時には3回などですが、1回だけではありません。コンボボックスのSelectedIndexを-1に設定した回数に関係なく、SelectedIndexが0の場合に少なくとも1回は発生します。SelectedIndexChangedイベントの間にItemselectedイベントが複数回発生することがあります。

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)

サブ終了

私は何が悪いのか完全に途方に暮れています。私または他の誰かがそれを理解するまで私はこのスレッドを監視しているので、さらに情報が必要な場合は私に知らせてください。

4

2 に答える 2

3

私の知る限り、新しいコンボボックスを追加すると、選択したインデックスがこの時点で変更されます(これが最初にトリガーされるときです)。また、プログラムで値を変更するたびにトリガーされます。

ユーザーがコンボボックスから何かを選択した後にコントロールを生成したい場合は、を使用してみてください

ComboBox.SelectionChangeCommitted

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

于 2012-04-26T12:22:47.230 に答える
0

listviewで私は同じ問題を抱えていました。私はこれを使用しました:

if (listview.SelectedItems.Count > 0)
{
   //do something...
}
于 2018-08-30T15:01:52.330 に答える