Wir mit solchen Handler eine Beispielanwendung haben für eine Combobox in „Dropdownlist“ -Modus:seltsame Verhalten verursacht durch .NET ComboBox Eigenschaften Selection & SelectionLength in „Dropdownlist“ -Modus
private void comboBox1_Leave(object sender, EventArgs e)
{
comboBox1.SelectionStart = 0;
comboBox1.SelectionLength = 0;
}
den obigen Code verhält sich anders, je ob die Anwendung CALLWNDPROC-Hook geladen hat oder nicht Wenn die Anwendung über einen CALLWNDPROC-Hook verfügt, würde der obige Code eine Ausnahme auslösen, wenn die Combobox den Fokus verliert. Ohne den Haken - dieser Code wirft nicht.
das sind einige Zeilen von Ausnahmebeschreibung:
System.ArgumentOutOfRangeException: InvalidArgument=Value of '-2136611475' is not valid for 'start'.
Parameter name: start
at System.Windows.Forms.ComboBox.Select(Int32 start, Int32 length)
at System.Windows.Forms.ComboBox.set_SelectionLength(Int32 value)
at ComboCrash.Form1.comboBox1_Leave(Object sender, EventArgs e) in T:\tmp.proj\ComboCrash\ComboCrash\Form1.cs:line 32
at System.Windows.Forms.Control.OnLeave(EventArgs e)
at System.Windows.Forms.Control.NotifyLeave()
at System.Windows.Forms.ContainerControl.UpdateFocusedControl()
Die Frage ist: Was könnte die Ursache dieses unterschiedliche Verhalten mit einem Haken sein installiert?
PS1: Ich bin kein C# -Entwickler, aber es scheint mir, dass das Konzept der textuellen Auswahl nicht für DropDownList-Comboboxen anwendbar ist (da sie keine Textbox haben), ist es korrekt?
PS2: Anwendung, die den Hook und eine Hook-DLL installiert, werden in C++ geschrieben. Hook-Funktion ist so einfach wie:
return (CallNextHookEx(hook_handle, code, wParam, lParam));