c# - 如何构建 Windows 窗体电子邮件感知文本框?

标签 c# .net winforms

我正在构建一个 C# 客户端应用程序,它允许用户通过类似电子邮件的隐喻与系统中的一个或多个现有用户进行通信。我想向用户展示一个文本输入框,该框可在已知电子邮件地址上自动完成,并允许输入多个以定界符分隔的地址。理想情况下,我还希望电子邮件地址在输入和识别后变成结构化控件。基本上,我正在为 Facebook 模型后添加用户的 UI 交互建模。

是否有任何 Windows 窗体控件能够执行此类操作?混合文本框/控制列表框(不,不是 ComboBox)是否有任何成熟的术语或我应该搜索的东西?

谢谢,

-帕特里克

最佳答案

过去,我很幸运地创建了复合用户控件,以使用 native .NET Winforms 控件提供特定功能。只要它们不是太多,它就可以很好地工作,在这种情况下,事情开始变慢。

在你的情况下,这只是我的想法,但是,也许你可以采用 FlowLayoutPanel、Button 和支持自动完成的文本框,并将它们组合在一起以创建一个控件,该控件将提供您正在寻找的功能。

如果在控件中没有选择地址(例如在 List 中),则容器 (FlowLayoutPanel) 将只显示 TextBox。一旦用户选择了一个条目,该控件将自动创建一个带有适当标题的按钮,并将其插入到 FlowLayoutPanel 的左侧。如果用户删除他/她已经选择的地址,只需从 FlowLayoutPanel 中删除它的表示(按钮),文本框就可以相应地调整大小。 让 TextBox 填满剩余空间可能会出现问题(我不记得该怎么做),但你明白了。容器不必是 FlowLayoutPanel - 你可以为此使用带有停靠控件的面板,甚至是 TableLayoutPanel。

我所描述的设计将允许用户通过单击按钮来删除地址。然而,如果没有其他一些视觉提示,这不是很直观或用户友好,所以我会考虑让“按钮”成为另一个复合控件,其中包含一个“漂亮”标签和一个小删除按钮(X)向右。为此,您可以使用面板控件并将 X 按钮停靠在右侧,并在左侧填充标签。您可以根据需要在此处提供公共(public)属性以控制文本并为删除功能提供事件处理程序或回调。

一旦视觉效果正常工作,剩下的就是在主控件上提供适当的属性和方法,以允许它根据需要与外部代码进行交互。

关于c# - 如何构建 Windows 窗体电子邮件感知文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3057693/

相关文章:

c# - 使用没有 InvokePattern 或 clickablePoint 的 UI Automation 在单击按钮时调用

c# - Capslock 打开和关闭应用程序

c# - 为什么取消父任务时不会触发子任务的任务继续?

c# - 我的代码已被 Norton 检测到病毒(Sonar)

javascript - Web浏览器注入(inject)Javascript将焦点设置到第一个输入框

c# - 获取图表/表格的下一种颜色?

c# - UE4 波浪水 Material 和网格问题

.net - 在 Visual Studio 2010 中使用 .Net 2.0 Web 引用

c# - 数据绑定(bind)期间不绑定(bind)继承的属性

c# - 获取窗口的所有句柄