2009-03-13 9 views
5

Ich bin auf der Suche nach einem Steuerelement (oder Vorschläge zum Erstellen eigener) für eine .NET 2.0 (Windows) -App, die wie das Adressfeld im Outlook-Mail-Fenster funktioniert (Biene unten).NET Control wie Outlook E-Mail-Adresse Text Control

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

die Steuerung grundsätzlich funktioniert, wo jede E-Mail-Adresse wie ein Artikel im Textbereich ist. Es ist mir egal, ob der Benutzer auch in diesen Bereich tippen soll, wie Sie es in Outlook können. Ich möchte nur diese vollständigen Zeichenfolgen (E-Mail-Adressen) dem Textbereich oder der Liste hinzufügen können, und der Benutzer kann sie auswählen (aber nicht bearbeiten) und löschen oder durch die Liste löschen, um ganze Elemente zu löschen (e -Mail-Adressen).

Wer weiß von einer Kontrolle da draußen, die das tut? Irgendwelche Vorschläge, um mein eigenes zu bauen? (oder jemand weiß, was Sie diese Kontrolle nennen, damit ich weiß, was zu googeln?)

+0

+1 Ich muss etwas Ähnliches machen (aber keine E-Mail-Adressen), hast du irgendwelche Freude damit? –

Antwort

1

Hier einige Code ist, um loszulegen.

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]m; [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; 
     } 
    } 
} 

Dies wird, wenn Sie auf eine E-Mail-Adresse klicken, die gesamte E-Mail-Adresse auswählen. Ich bin mir nicht sicher, ob das die Funktionalität ist, für die Sie sich entscheiden (es hört sich so an), aber es wird Sie weiterbringen. Wenn Sie andere Dinge tun möchten, als Klickfunktionen zu haben, können Sie auch die anderen von TextBox angebotenen Veranstaltungen nutzen.

+0

Ich endete eine ähnliche Route. Danke für den Kommentar. –

-2

.NET 2.0 Windows Forms hat bereits, und es ist einfach eine MaskedTextBox.

Um jedoch maximale Eingabegültigkeit wie die E-Mail-Adresse bereitzustellen, können Sie die Überprüfung des regulären Ausdrucks (Regex) hinzufügen, wenn der Text in der MaskedTextBox geändert wird.

Update: Um weitere Anpassung wie mehrere E-Mail-Adresse angeben, können Sie auch MaskedTextBox mit RichTextBox kombiniert verwenden, da gibt es keine native Windows Forms-Implementierung der genauen Funktionalität von Outlook E-Mail-Adresse Eingabesteuerung.

Ich habe dies auch getan, durch Erfassen des aktuellen Cursors des Benutzers, wenn das RichTextBox-Steuerelement den Fokus erhalten hat, und dann direkt maskieren die Eingabe mit zusätzlichen MaskedTextBox zur Laufzeit generiert auf der RichTextBox angezeigt. Daher kann es mehrere MaskedTextBoxes geben, wenn die E-Mail-Adressen mehr als eine eingegeben haben.

Ich sage nicht, dass dies eine einfache Aufgabe ist, aber das ist machbar.

sehen:

MSDN documentation on MaskedTextBox

+1

Das ist nicht ganz dasselbe. Ich sehe nicht, wie Sie eine MaskedTextBox verwenden würden, um diese Art von Funktionalität bereitzustellen. Es müsste so etwas wie eine vom Eigentümer gezeichnete ListView sein. –

+0

Sie haben in Ihrer Frage gesagt, dass Sie diese Funktionalität in einem Textfeld oder einer Liste haben möchten. MaskedTextBox ist auch ein Textfeld. –

+0

Ich habe die Wörter "Textbereich" verwendet, um zu beschreiben, was dieses Steuerelement in Outlook ist. Der Screenshot zeigt eine Liste von Adressen und die Frage beschreibt eine Liste von E-Mail-Adressen, von denen jede ein komplettes "Element" in dieser Liste von Adressen ist. In Outlook ist ein Textbereich, der Benutzer kann auch –