WinForm中的NativeWindows,ComboBox和UserControl(c#)

时间:2017-09-08 19:57:00

标签: c# .net winforms combobox autocomplete

我真的被这个原则所摧毁,我现在将解释。我确实使用了本文中提到的答案的代码(Combo box drop down width on suggest)。 在继承ComboBox时,代码工作正常。正如以下代码中所述:

public class ComboBoxEx : ComboBox
{
    ... //(See the code in the post: https://stackoverflow.com/questions/4820429/combo-box-drop-down-width-on-suggest)

    private class ACWindow : NativeWindow
    {
        ....
    }
}

好吧,正如我上面所说,如果我在我的表单中使用ComboBoxEx类,这可以正常工作:我可以处理AutoComplete窗口的大小。 但是,如果我在UserControl中使用ComboBoxEx类,然后将UserControl插入到我的表单中,它将不再起作用。 从我理解的各种尝试(可能),ACWindow类的WndProc方法不会因任何原因而被执行。 为什么Windows消息没有转发到UserControl的子控件?

换句话说,我使用的代码几乎如下:

// UserCOntrol class declaration
public class MyCmbControl : UserControl
{
    ComboBoxEx ExtendedCombo = new ComboBoxEx();
    ....
}
// Form class declaration
public class MyForm : Form
{
     protected ComboBoxEx Cmb1 = new ComboBoxEx(); //-- This work fine!!
     protected MyCmbControl Cmb2 = new MyCmbControl(); //-- This will no longer work
}

注意:

  • UserControl控件将ComboBoxEx控件作为唯一的子项
  • 我尝试在UserControl级别移动ACWindows类
  • 我尝试向MyCmbControl的ComboBoxEx成员发送0x0047(WM_WINDOWPOSCHANGED)消息

这一切都没有取得好成绩...... 我提前感谢你们给予我的帮助,并为我在这篇文章中使用的错误英语道歉!!!

0 个答案:

没有答案