Winformscombobox在丢失焦点时丢失自动完成值我遇到了一个问题,当用户选择下一个控件时,Winformscombobox丢失了它在自动完成期间找到的值。这是一个代码示例(作为将弹窗的Nunit测试):[Test][STAThread]publicvoidTesting_AsDropDownList(){varcomboBox=newComboBox();comboBox.DropDownStyle=ComboBoxStyle.DropDownList;comboBox.AutoCompleteSource=System.Windows.Forms.AutoCompleteSource.ListItems;comboBox.AutoCompleteMode=System.Windows.Forms.AutoCompleteMode.SuggestAppend;comboBox.Items.Add(newComboPair("aaa","ItemAA"));comboBox.Items.Add(newComboPair("bbb1","ItemBBB1"));comboBox.Items.Add(newComboPair("bbb2","ItemBBB2"));comboBox.Items.Add(newComboPair("bbb3","ItemBBB3"));comboBox.Items.Add(newComboPair("ccc","ItemCCC"));vartextBox=newTextBox{Multiline=true};comboBox.Leave+=(sender,args)=>textBox.Text="OnLeave:"+comboBox.SelectedItem;comboBox.LostFocus+=(sender,args)=>textBox.Text+="...OnLostFocus:"+comboBox.SelectedItem;varfrm=新表格();frm.Width=300;frm.Height=100;comboBox.Dock=System.Windows.Forms.DockStyle.Top;特xtBox.Dock=System.Windows.Forms.DockStyle.Bottom;frm.Controls.Add(comboBox);frm.Controls.Add(文本框);Application.EnableVisualStyles();应用程序运行(frm);}要重现错误,请按照下列步骤操作:运行测试表单将调出组合框焦点...现在键入“bbb3”以选择具有自动完成功能的相应项目您现在将看到文本框更新为“bbb3”作为您选择的项目.现在按TAB现在您将看到文本框具有焦点并且组合选择已更改为“bbb1”。另请注意,在文本框中,当离开事件触发时,它会向您显示所选值仍为“bbb3”,但当失去焦点事件触发时,所选值仍为“bbb1”。如果您单击组合框使其在步骤3中失去焦点,则会发生相同的行为。如果您在步骤3中执行任何其他操作,则不会发生此问题。即如果你:有什么想法吗?我从微软http://connect.microsoft.com/VisualStudio/feedback/details/711945/tab-on-a-winforms-combobox-with-properties-autocompletemode-append-autocompletesource-listitems-doesnt-work找到了这个链接-正确基本上这是一个已知问题,Microsoft表示他们无法修复它。但是,该链接的变通办法部分有两个变通办法。该值在WM_KILLFOCUS消息中丢失。在ComboBox的子类中重写WndProc为我解决了这个问题(除了单击失去焦点......但我想这可以像在网站对话框中那样被解释为解散)。可惜我手边只有VB.NET代码:以上是C#学习教程:Winformscombobox在lostfocus上丢失自动补全值所有内容分享,如果对大家有用还需要进一步了解C#学习教程,我希望你能给它很多Follow—ProtectedOverridesSubWndProc(ByRefmAsMessage)Ifm.Msg=&H8Then'WM_KILLFOCUSDimsTextAsString=Me.TextMyBase.WndProc(m)Me.Text=sTextExitSubEndIfMyBase.WndProc(m)EndSub本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
