调整浮动弹出控件的大小





5.00/5 (4投票s)
一个可调整大小且可浮动的工具箱弹出组件。
引言
在四处搜索之后,我开始着手创建实际上有用的 .NET 控件的艰巨旅程。现在组件稳定且整洁,我不再需要它了。哈哈。
因此,我在这里分享它,希望它能够发展,或者证明自己是迄今为止最有价值的控件。
我毫不怀疑它会找到有用的实现。再次简单地说,因为我认为外面没有像这样的独立组件。
它是一个可设计用户控件,可以按命令浮动并可调整大小。
使用 C# 编写,没有难以管理的代码,旨在非常快速且易于实现。
目前,它与文本框和下拉列表框配合使用效果最佳。但是,可以从任何触发控件中使用任何嵌入式控件。
以下是所需编码步骤的示例。
背景
最初的需求来自 DevExpress 的一个问题。因此,外观反映了默认的 DevExpress 下拉菜单。我花了很长时间编写它并将其调整到当前状态。
警告一句,如果您更改 FloatingSizePopup 控件的源代码,即使是很小的更改也会导致所有功能崩溃,也请不要感到惊讶。代码序列至关重要。我被迫使用几个计时器。计时器经过设计,不会干扰任何下拉(嵌入式)控件。(我认为这就是 DevExpress 脱轨的地方。)
我的前三次尝试在编码的许多小时(实际上是几个月更准确)后失败了。
我在第四次尝试中发现的秘密是完全隔离控件的浮动部分。
Using the Code
我试图使此控件尽可能像 Visual Studio 中的默认容器控件一样工作。为此,我使用了 System.Design 支持。这迫使应用程序成为 Framework 4 解决方案。Framework 4 Client 解决方案类型不起作用。
此示例也可以下载。
第一步是设置您的框架版本。(创建解决方案后。)
从解决方案资源管理器中的属性…
步骤 2] 将“触发控件”(如此文本框)放入表单工作区…
步骤 3] 将 FloatingSizePopup 控件添加到工具箱(先下载并解压)。
步骤 4] 引用 FloatingSizePopup 解决方案的 DLL 文件…
步骤 5] 从工具箱拖动控件并大致将其定位在弹出位置。
确保移动和调整 FloatingSizePopup 控件的大小,而不是内部的容器控件。
参见下图中带有 4 个箭头的框。这表示选择了正确的控件。
如果您确实单击内部并且选择发生更改(查看属性框),请再次单击底部以选择 FloatingSizePopup(用户控件)。
步骤 6] 现在您可以将弹出组件放入顶部部分(panelTable 主机)…
步骤 7] 和…
单击外部,愚蠢的虚线框就会消失。(???)[这里没有 wtf!]
步骤 8] 现在几乎完成了。添加列表元素。(当然可以在运行时完成。)
步骤 9] 处理触发(在本例中为 MouseClick)事件。像这样
不要使用 `FloatingSizePopup1` 的 `Show()` 方法。(我无法使其隐藏。)
使用 `Show(Object sender, Bounds bounds)` 方法启动弹出窗口。
步骤 10] 代码…
步骤 11] 构建项目并运行。
控件知道需要填充文本框,并为您完成所有这些操作。
使用拖动角调整下拉菜单的大小…
步骤 12] 酷。(还是什么?)但是等等,还有更多。
如果它离屏幕底部太近,翻转方向将自动垂直更改。
像这样…
步骤 13](必须始终是 13,不是吗?)结果。选择列表框项并单击勾号按钮
关注点
DevExpress 弹出下拉菜单会在选择时立即关闭。如果您喜欢这样,请在底部部分(按钮旁)单击鼠标右键。将弹出选项面板。设置 QuickSelect 复选框状态,它就可以那样工作了。这也是一个公共属性,可以通过代码设置。
现在是“看看这个”时刻
双击拖动角,调整大小方向就会改变。(以为你可能会喜欢这个!)
如果您的组件在调整大小期间“闪烁”,请尝试 `hideEmbeddedOnresize` 属性。将其设置为 true。这应该在某种程度上解决问题。
如果您认为我可以做得更好,或者有什么好主意,请给我发电子邮件。
玩得开心!
Johan