C# kotak kombo pelengkapan otomatis memicu SelectionChangeCommited

Saya mengalami masalah dengan properti pelengkapan otomatis pada kotak kombo. Saya ingin memicu acara SelectionChangeCommited setiap kali saya memilih item menggunakan pelengkapan otomatis tetapi tidak berfungsi. Satu-satunya cara acara dipicu adalah ketika saya menggunakan klik mouse dan memilih opsi atau ketika kotak kombo terfokus dan saya menggunakan tombol panah pada keyboard. Bagaimana cara mencapai perilaku ini menggunakan properti pelengkapan otomatis?

Kombo saya memiliki kumpulan properti berikut:

AutoCompleteMode = SuggestAppend
AutoCompleteSource = ListItems
FormattingEnabled = True

Item dalam kombo saya disetel dengan sumber data.

Ada ide? Terima kasih


person Jorge Zapata    schedule 04.11.2011    source sumber


Jawaban (2)


Jika maksud Anda ingin mendaftarkan perubahan saat Anda mulai mengetik:

Panggil acara SelectionChangeCommited dari acara TextChanged.

Jika Anda belum pernah melakukan ini, contoh paling mendasar yang dapat saya temukan adalah di forum .net di sini. Memang benar, metode yang ditampilkan bersifat umum, tetapi sangat mudah untuk dipahami dan diterapkan pada kode Anda.

EDIT TETAP (pada komentar terbaru):

Masih menyatukan peristiwa-peristiwa tersebut, namun alih-alih menggunakan TextChanged, yang akan terjadi setiap kali Anda mengetik, gunakan SelectedIndexChanged, yang terjadi saat Anda menggunakan mouse untuk memilih item yang disarankan secara otomatis.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   comboBox1_SelectionChangeCommitted(sender, e);
}
person KreepN    schedule 04.11.2011
comment
Tidak ketika saya mulai mengetik, saya ingin memicu peristiwa tersebut ketika memilih opsi yang disarankan. - person Jorge Zapata; 05.11.2011
comment
Ah, saya mengerti apa yang ingin Anda lakukan. Anda masih menggunakan mouse untuk memilih, tetapi saat Anda mengeklik opsi yang disarankan, opsi tersebut tidak terdaftar sebagai SelectionChangeCommited, bukan? - person KreepN; 05.11.2011
comment
Itu tidak terpicu, izinkan saya memeriksanya. - person Jorge Zapata; 05.11.2011
comment
Itu karena kodenya tidak benar, saya menempelkan kode yang salah, mohon maaf. Saya memperbaikinya (dan mengujinya juga, itu berhasil untuk saya). Juga alasan kode orang lain tidak berfungsi adalah karena acara yang dia panggil kodenya dijalankan ketika kontrol itu sendiri divalidasi dengan pemuatan formulir itu sendiri. - person KreepN; 05.11.2011
comment
Anda sudah mencoba kode yang diedit di atas? Saya tidak yakin karena saya mengeposkannya pada Jumat malam untuk Anda, beri tahu saya bagaimana hasilnya. - person KreepN; 07.11.2011
comment
Maaf terlambat, saya tidak berada di kota akhir pekan ini tetapi sekarang saya kembali. Sebenarnya kode Anda berfungsi, terima kasih kawan - person Jorge Zapata; 07.11.2011

Anda dapat menggunakan trik dan memanggil comboBox1_SelectionChangeCommitted di acara yang Divalidasi

setiap kali teks di kotak kombo berubah dan pengguna meninggalkan kotak kombo, teks tersebut akan diaktifkan

  private void comboBox1_Validated(object sender, EventArgs e)
    {
        comboBox1_SelectionChangeCommitted(sender, e);

    }
person DeveloperX    schedule 04.11.2011
comment
Ya sudah saya cek, solusi masalah saya adalah jawaban di atas, terima kasih pokoknya - person Jorge Zapata; 07.11.2011