2009-03-13 16 views
5

Estoy buscando un control (o sugerencias para construir el mío) para una aplicación .NET 2.0 (Windows) que funciona como el cuadro de dirección en la ventana de correo de Outlook (abeja a continuación)Control .NET como Outlook Dirección de correo electrónico Texto Control

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

el control funciona básicamente en que cada dirección de correo electrónico es como un elemento en el área de texto. No me importa tanto permitir que el usuario también escriba en esta área como puede en Outlook. Solo deseo poder agregar estas cadenas completas (direcciones de correo electrónico) al área de texto, o lista, y el usuario puede seleccionarlas (pero no editarlas) y puede eliminar o retroceder a través de la lista para eliminar elementos completos (e direcciones de correo electrónico).

¿Alguien sabe de un control que hace esto? ¿Alguna sugerencia para construir la mía? (¿Alguien sabe lo que incluso se llama este control, así que sé qué google?)

+0

+1 Tengo que hacer algo similar (pero no a las direcciones de correo electrónico), ¿obtuviste algo de alegría con esto? –

Respuesta

1

Aquí hay un código para que pueda empezar.

using System.Text; 
using System.Windows.Forms; 
using System; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      textBox1.Text = "[email protected]; [email protected]; [email protected]"; 
     } 

     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; 
     } 
    } 
} 

Al hacer clic en una dirección de correo electrónico, seleccionará la dirección de correo electrónico completa. No estoy seguro de si esta es la funcionalidad que está buscando (aunque suena como lo es), pero lo ayudará a comenzar. Si desea hacer otras cosas además de tener la funcionalidad de hacer clic, enganche en los otros eventos ofrecidos por TextBox.

+0

Terminé yendo por una ruta similar. Gracias por el comentario. –

-2

.NET 2.0 Windows Forms ya tiene eso, y es simplemente un MaskedTextBox.

Pero para proporcionar la máxima validez de entrada, como la dirección de correo electrónico, puede agregar la validación de expresiones regulares (Regex) cuando se cambia el texto en MaskedTextBox.

Actualización: Para proporcionar más opciones de personalización, tales como dirección de correo electrónico múltiples, también se puede utilizar en combinación con MaskedTextBox RichTextBox, ya que no hay nativo de Windows Forms aplicación de la funcionalidad exacta de control de entrada de dirección de correo electrónico de Outlook.

También he hecho esto, capturando el cursor actual del usuario cuando el control RichTextBox obtuvo el foco, y luego enmascarando directamente la entrada usando MaskedTextBox adicional generado sobre la marcha en tiempo de ejecución, que se muestra en la parte superior de RichTextBox. Por lo tanto, puede haber múltiples MaskedTextBoxes cuando las direcciones de correo electrónico ingresan en más de una.

No estoy diciendo que esta sea una tarea fácil, pero esto es factible.

ver esto:

MSDN documentation on MaskedTextBox

+1

Eso no es completamente lo mismo. No veo cómo usaría MaskedTextBox para proporcionar ese tipo de funcionalidad. Tendría que ser algo así como un tipo de ListViewView dibujado por el propietario. –

+0

Usted dijo en su pregunta que desea esta funcionalidad en un área de texto O en una lista. MaskedTextBox es también un área de texto. –

+0

Utilicé las palabras "área de texto" para describir qué es este control en Outlook. La captura de pantalla muestra una lista de direcciones y la pregunta describe una lista de direcciones de correo electrónico, cada una es un "elemento" completo en esta lista de direcciones, que en Outlook es un área de texto, el usuario también puede escribir allí –

Cuestiones relacionadas