|
I created a custom combo box class, which inherits from the built-in System.Windows.Forms.ComboBox class. I changed the AutoCompleteMode property to be AutoCompleteMode.SuggestAppend, which is working just fine. However, I would now like to capture the up & down arrows, only when the auto complete dialog is NOT open, to allow a client to cycle through all of the drop down options without opening the dropdown (in my custom control, the Items property is an empty collection, and my dropdown is done using a ToolStripDropDown).
Currently, I have overridden the ProcessCmdKey method, since the KeyDown, KeyUp, and KeyPress events are not being fired once the auto complete dialog has been opened (even if it is closed at a later time). The problem is that I can't figure out how to tell if the auto complete dialog is open. If it is open, I want to use the default behavior implemented in the base class. If not, I want the drop down to cycle through the available options.
I have looked through the Windows messages using Spy++, but can't figure out which one is causing the auto complete dialog to open & close. Some of the suspicious ones are (WM_USER + 7441), LB_FINDSTRING, LVM_GETNEXTITEM, and LVM_SETITEMCOUNT when it opens, and LVM_SETITEMSTATE when it closes.
Should I watch for these messages within the WndProc override, and maintain a boolean between the LVM_SETITEMCOUNT and LVM_SETITEMSTATE? Should I query all open classes of type ComboLBox (the type that is being displayed in the auto complete; the problem is that the parent is the desktop for this type)? Is there some better way to query whether the auto complete dialog is open?
Thanks,
Sounds like somebody's got a case of the Mondays
-Jeff
|
|
|
|