.NET控件,如Outlook的电子邮件地址文本控件

我正在寻找一个控件(或建立我自己的建议)的.NET 2.0(Windows)应用程序,就像Outlook邮件窗口中的地址框(蜜蜂下面)

Outlook地址控制http://content.screencast.com/users/Ryan_Farley/folders/Jing/media/a511142b-dd04-4885-ad1e-f2582c201723/2009-03-12_2116.png

该控件基本上适用于每个电子邮件地址就像文本区域中的项目。 我并不在乎让用户也像在Outlook中那样输入这个区域。 我只是希望能够将这些完整的字符串(电子邮件地址)添加到文本区域或列表中,用户可以选择它们(但不能编辑),并可以通过列表删除或退格以删除整个项目(e邮箱地址)。

任何人都知道那里有控件吗? 有关建立自己的建议吗? (或者任何人都知道你甚至称之为控件,所以我知道谷歌会怎样?)

这里有一些代码可以帮助您入门。

using System.Text; using System.Windows.Forms; using System; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); textBox1.Text = "mail@mail.com; mail2@mail.com; mail3@mail.com"; } private void textBox1_Click(object sender, EventArgs e) { int nextSpaceIndex = textBox1.Text.Substring(textBox1.SelectionStart).IndexOf(' '); int firstSpaceIndex = textBox1.Text.Substring(0, textBox1.SelectionStart).LastIndexOf(' '); nextSpaceIndex = nextSpaceIndex == -1 ? textBox1.Text.Length : nextSpaceIndex + textBox1.SelectionStart; firstSpaceIndex = firstSpaceIndex == -1 ? 0 : firstSpaceIndex; textBox1.SelectionStart = firstSpaceIndex; textBox1.SelectionLength = nextSpaceIndex - firstSpaceIndex; } } } 

当您单击电子邮件地址时,这将选择整个电子邮件地址。 我不确定这是否是你想要的function(虽然听起来像是这样),但它会让你开始。 如果您想要执行除点击function之外的其他事情,请加入TextBox提供的其他事件。

.NET 2.0 Windows Forms已经拥有它,它只是一个MaskedTextBox。

但是为了提供最大的输入有效性(如电子邮件地址),您可以在更改MaskedTextBox中的文本时添加正则表达式(Regex)validation。

更新:为了提供更多自定义,例如多个电子邮件地址,您还可以使用MaskedTextBox与RichTextBox结合使用,因为没有本机Windows窗体实现Outlook电子邮件地址输入控件的确切function。

我也是这样做的,通过在RichTextBox控件获得焦点时捕获用户的当前光标,然后使用在运行时动态生成的附加MaskedTextBox直接屏蔽输入,显示在RichTextBox的顶部。 因此,当输入的电子邮件地址不止一个时,可以有多个MaskedTextBox。

我不是说这是一件容易的事,但这是可行的。

看到这个:

有关MaskedTextBox的MSDN文档