.NET Control как текстовый элемент управления адресом электронной почты Outlook - PullRequest
5 голосов
/ 13 марта 2009

Я ищу элемент управления (или предложения по созданию собственного) для приложения .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. Я просто хочу иметь возможность добавить эти полные строки (адреса электронной почты) в текстовую область или список, и пользователь может выбрать их (но не редактировать) и может удалить или вернуться через список для удаления целых элементов ( адреса электронной почты).

Кто-нибудь знает о контроле, который это делает? Любые предложения по созданию моего собственного? (или кто-нибудь знает, как вы вообще называете этот элемент управления, чтобы я знал, что гуглить?)

Ответы [ 2 ]

1 голос
/ 08 мая 2009

Вот код, с которого можно начать.

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.

0 голосов
/ 13 марта 2009

.NET 2.0 Windows Forms уже имеет это, и это просто MaskedTextBox.

Но чтобы обеспечить максимальную достоверность ввода, например адреса электронной почты, вы можете добавить проверку регулярного выражения (Regex) при изменении текста в MaskedTextBox.

Обновление: Чтобы обеспечить дополнительную настройку, например, нескольких адресов электронной почты, вы также можете использовать MaskedTextBox в сочетании с RichTextBox, поскольку нет встроенной реализации Windows Forms точных функций управления вводом адресов электронной почты Outlook.

Я также сделал это, захватывая текущий курсор пользователя, когда элемент управления RichTextBox получил фокус, и затем непосредственно маскируя ввод, используя дополнительный MaskedTextBox, сгенерированный на лету во время выполнения, отображаемый поверх RichTextBox. Поэтому может быть несколько MaskedTextBox, когда адреса электронной почты введены более чем в один.

Я не говорю, что это простая задача, но это выполнимо.

Смотрите это:

Документация MSDN на MaskedTextBox

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...