我正在寻找一个.NET 2.0(Windows)应用程序的控件(或建立我自己的建议),它的工作方式类似于Outlook邮件窗口中的地址框(下面的蜜蜂)
控件基本上适用于每个电子邮件地址就像文本区域中的项目。我并不在乎让用户也像在Outlook中那样输入这个区域。我只是希望能够将这些完整的字符串(电子邮件地址)添加到文本区域或列表中,用户可以选择它们(但不能编辑),并可以通过列表删除或退格以删除整个项目(e邮件地址)。
任何人都知道有控制权可以做到这一点吗?有关建立自己的建议吗? (或者任何人都知道你甚至称之为控制权,所以我知道要google什么?)
答案 0 :(得分:1)
这里有一些代码可以帮助您入门。
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;
}
}
}
当您点击电子邮件地址时,这将选择整个电子邮件地址。我不确定这是否是你想要的功能(虽然听起来像是这样),但它会让你开始。如果您想要执行除点击功能之外的其他事情,请加入TextBox
提供的其他事件。
答案 1 :(得分:-2)
.NET 2.0 Windows Forms已经拥有它,它只是一个MaskedTextBox。
但是为了提供最大的输入有效性,例如电子邮件地址,您可以在更改MaskedTextBox中的文本时添加正则表达式(Regex)验证。
<强>更新强> 为了提供更多自定义,例如多个电子邮件地址,您还可以使用MaskedTextBox与RichTextBox结合使用,因为没有本机Windows窗体实现Outlook电子邮件地址输入控件的确切功能。
我也是这样做的,通过在RichTextBox控件获得焦点时捕获用户的当前光标,然后使用在运行时动态生成的附加MaskedTextBox直接屏蔽输入,显示在RichTextBox的顶部。因此,当输入的电子邮件地址不止一个时,可以有多个MaskedTextBox。
我不是说这是一件容易的事,但这是可行的。
见: