ComboBox是我在程序运行时象从工具箱中拖放控件动态生成的,现在我不需要它的下拉功能,只需要双击它能够弹出我的属性设置窗体,这里的ComboBox相当于我的一个设计状态的控件。label和textbox很好处理,但ComboBox不响应双击事件,同时在单击时要下拉。同时还有checkbox它没有双击事件,没办法重写
ComboBox处理双击事件具体代码:
protected override void OnDoubleClick(System.EventArgs e)
{
 
if(newForm!=null)
{ newForm.Tag =this;//将自身信息传递到打开窗体
newForm.ShowDialog(); 


}
}
请问各位高手应该怎样解决,非常谢谢!

解决方案 »

  1.   

    to 现在我不需要它的下拉功能,只需要双击它能够弹出我的属性设置窗体如果是这样的话,你何必用combobox控件呢,直接用panel来模拟不是效果更好。
      

  2.   

    参看
    http://blog.csdn.net/knight94/archive/2006/04/14/663300.aspx
      

  3.   

    这里面我用panel来模拟combobox,双击后弹出窗口。
      

  4.   

    sorry,目前是单击,你可以修改一下。
      

  5.   

    你的意思是说,将panel画成combobox的样子?
      

  6.   

    要做到可见即可得的效果,不能用panel来代替
      

  7.   

    纳闷!不用下拉功能你何必用combobox?你想什么时候用它的下拉功能呢?
      

  8.   

    尝试了自己派生ComboBox也不行,看来你只好自己做一个控件了.
      

  9.   

    这里的Combobox是我在程序运行时象从工具箱中拖放控件动态生成的,相当于我的一个设计状态的控件,通过设置它的属性,把它相关的属性保存到数据库中,然后再通过程序解析出来用。一句话做一个平台化的软件,做到可见即可得的效果,明白我的意思没
      

  10.   

    你可以继承combobox去写一个,如下是如何屏蔽下拉框的,参看
    http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c88c.aspx#q962q至于双击打开,你可以在其中按照我blog的方法去做,去定义双击事件。
      

  11.   

    那你应该是在你的FORM上做手脚不而不是控件上。这些控件本身都具有设计时属性,就和你的VS里的一样。你需要的只是一个类似于VS里面一个WINFORM窗体。要不你解决了这个问题,还有别的控件等你解决呢。你可以参看2005年前面几期的MSDN开发精选上有一篇文章,就是说如何做一个类似VS一样的界面设计器。或者你需要耐心看一下SharpDevelop(开源的,你能下到源代码)是怎么实现的。
      

  12.   

    找到一个东西,你看下,和你说的差不多。http://msdn.microsoft.com/msdnmag/issues/06/03/DesignerHosting/default.aspx
      

  13.   

    http://msdn.microsoft.com/msdnmag/issues/04/12/CustomFormsDesigner/default.aspx
    这个就是我说的MSDN开发精选上的那篇文章。你看看吧
      

  14.   

    Knight94 兄:
    protected override void WndProc(ref System.Windows.Forms.Message m) 
     

     
    if(m.Msg == 0x201
    //WM_LBUTTONDOWN
    || m.Msg == 0x203) //WM_LBUTTONDBLCLK 
     
    return; 
     
    base.WndProc(ref m); 
     

    用方这个可以屏蔽下拉,如果你再提供一下双击m.msg的id就可以解决了。
      

  15.   

    兄弟些:
    有没有人知道combobox的双击事件的消息ID,就可以解决问题了。
      

  16.   

    WM_LBUTTONDBLCLK = 0x203//这就是左键双击ID
      

  17.   

    你可以首先定义一个背景控件 用一个UserControl就行,当ComboBox获取焦点时把该自定义控件放到ComboBox的后面同时得到焦点,处理UserControl的双击事件就可以了.你可以为UserCOntrol定义一个Control类型的属性就于保存它代表的控件(比如说你的ComboBox).这样在双击事件中就可以取出ComboBox的所有当前属性值了.
    另外,解决你的这个问题还有更好的方法,你在界面上放一个PropertyGrid控件,在你需要编辑属性的控件获取焦点时就把它绑定到PropertyGrid控件上,这时就方便多了.