在这段旅程中,开始了创建一个真正有用的.NET控件的艰难任务。现在,这个组件已经稳定且整洁,不再需要它了。哈哈。
在这里分享它,希望它能进化,或者证明自己是有史以来最有价值的控件。
毫不怀疑它将找到有用的实现。再次简单地说,因为认为没有像这样的独立组件。
它是一个可设计的用户控件,可以根据命令浮动并且可以调整大小。
目前它与文本框和下拉列表框配合使用效果最佳。然而,任何嵌入的控件都可以从任何触发控件中使用。
下面是一个示例,展示了所需的编码步骤。
最初,这个需求来自于DevExpress的问题。所以外观和感觉反映了默认的DevExpress下拉。花了很长时间才写到这个状态。
如果改变了FloatingSizePopup控件的源代码,不要惊讶,即使是微小的改动也会破坏一切。代码序列至关重要。被迫使用了几个计时器。计时器的设计,不会干扰任何下拉(嵌入)控件。(认为这就是DevExpress偏离轨道的地方。)
前三次尝试在很多小时(实际上是几个月)的编码后失败了。
在第四次尝试中发现的秘密是,完全隔离浮动部分和控件。
试图让这个控件尽可能地表现得像Visual Studio中的默认容器控件。为此,使用了System.Design支持。这迫使应用程序成为一个FrameWork 4解决方案。FrameWork 4客户端解决方案类型不起作用。
这个示例也可以下载。
第一步,设置框架版本。(创建解决方案后。)
从解决方案资源管理器中的属性...
第二步] 将“触发控件”(如这个文本框)放入表单工作区...
第三步] 将FloatingSizePopup控件放入工具箱(首先下载并解压缩)。
第四步] 引用FloatingSizePopup解决方案的DLL文件...
第五步] 从工具箱中拖动控件并大致放置在应该弹出的位置。
确保移动和调整FloatingSizePopup控件的大小,而不是里面的容器控件。
看下一个图表中的带有4个箭头的框。这表明正确的控件被选中了。
如果点击里面并且选择改变了(注意属性框。),再次点击底部以选择FloatingSizePopup(用户控件)。
第六步] 现在准备好将弹出组件放入顶部部分(面板表的主机)...
第七步] 然后...
点击外面,愚蠢的虚线框消失了。(???)[这里没有wtf!]
第八步] 快完成了。添加列表元素。(当然可以在运行时完成。)
第九步] 处理触发(鼠标点击)事件。像这样
不要使用
FloatingSizePopup1.Show();
方法。(无法让它隐藏。)
使用
FloatingSizePopup1.Show(Object sender, Bounds bounds);
方法来启动弹出窗口。
第十步] 代码...
第十一步] 构建项目。然后运行。
控件知道需要填充一个文本框,并且会为完成所有操作。
通过拖动角落来调整下拉框的大小...
第十二步] 酷。(或者什么?)但等等,还有更多。
如果它太靠近屏幕底部,翻转方向会自动改变为“垂直”。
像这样...
第十三步](总是必须是13,不是吗?)结果。选择一个列表框项,然后点击勾选按钮
DevExpress弹出下拉框在选择后立即关闭。如果喜欢那样,那么在底部部分(按钮旁边)右键点击。一个选项面板会弹出。设置QuickSelect复选框的状态。它就是这样工作的。这也是一个可以通过代码设置的公共属性。
现在是“看看这个”时刻:
双击拖动角落,调整大小方向会改变。(想会喜欢的!)
如果组件在调整大小时“闪烁”,尝试将
hideEmbeddedOnresize
属性设置为true。这应该会在某种程度上解决问题。
如果认为可以做得更好,或者有一个聪明的想法,请给发电子邮件。