2009-03-13 2 views
5

Outlook 메일 창 (꿀벌)의 주소 상자처럼 작동하는 .NET 2.0 (Windows) 응용 프로그램에 대한 컨트롤 (또는 내 자신의 빌드에 대한 제안)을 찾고 있습니다. 아래)Outlook의 전자 메일 주소 텍스트 컨트롤과 같은 .NET 컨트롤

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

각 전자 메일 주소가 텍스트 영역의 항목처럼 어디 제어는 기본적으로 작동합니다. Outlook에서 할 수있는 것처럼이 영역에 사용자가 입력하게하는 것에 대해별로 신경 쓰지 않습니다. 난 단지 텍스트 영역이나 목록에이 완전한 문자열 (전자 메일 주소)을 추가 할 수 있기를 원하며 사용자는 편집 할 수는 없지만 목록을 삭제하거나 백 스페이스를 사용하여 전체 항목을 삭제할 수 있습니다 (e -mail 주소).

누구나 알고있는 컨트롤이 있습니다. 내 건물을 짓기위한 제안? (또는 누구든지이 컨트롤을 호출하여 무엇을 Google에 알릴 수 있는지 알고 있습니다.)

+0

+1 나는 비슷한 것을하고 싶지만 (이메일 주소는 아님), 이것으로 어떤 기쁨을 얻었습니까? –

답변

1

이 여기에 당신이 시작하는 몇 가지 코드입니다.

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

이메일 주소를 클릭하면 전체 이메일 주소를 선택합니다. 나는 이것이 당신이 가고있는 기능인지는 모르겠지만 (그것은 그렇다고 들릴지도 모른다.), 그러나 그것은 당신을 시작할 것이다. 클릭 기능 이상으로 다른 작업을 수행하려면 TextBox에 의해 제공되는 다른 이벤트에 연결하십시오.

+0

나는 비슷한 길로 갔다. 댓글 주셔서 감사합니다. –

-2

.NET 2.0 Windows Forms에는 이미 MaskedTextBox가 있습니다.

그러나 전자 메일 주소와 같은 최대 입력 유효성을 제공하려면 MaskedTextBox의 텍스트가 변경 될 때 정규 표현식 (정규식) 유효성 검사를 추가 할 수 있습니다.

업데이트 : 네이티브 윈도우 아웃룩의 이메일 주소를 입력 제어의 정확한 기능의 구현을 양식하지가 이후 , 당신도를 RichTextBox와 함께 MaskedTextBox에 사용할 수 있습니다, 같은 여러 이메일 주소로 더 많은 사용자 정의를 제공합니다.

또한 RichTextBox 컨트롤에 포커스가있을 때 사용자의 현재 커서를 캡처 한 다음 런타임에 런타임에 생성 된 추가 MaskedTextBox를 사용하여 입력을 직접 마스킹하여 RichTextBox 위에 표시함으로써이 작업을 수행했습니다. 따라서 전자 메일 주소가 여러 개 입력 된 경우 여러 MaskedTextBoxes가있을 수 있습니다.

저는 이것이 쉬운 일이라고 말하지는 않습니다 만 이것이 가능합니다.

이를 참조하십시오

MSDN documentation on MaskedTextBox

+1

그건 완전히 똑같은 것이 아닙니다. MaskedTextBox를 사용하여 그런 종류의 기능을 제공하는 방법을 알지 못합니다. 그것은 소유자가 그린 종류의 ListView와 같아야합니다. –

+0

당신은 질문에이 기능을 텍스트 영역이나 목록에 넣으 려한다고 말했습니다. MaskedTextBox는 텍스트 영역이기도합니다. –

+0

Outlook에서이 컨트롤이 무엇인지 설명하기 위해 "텍스트 영역"이라는 단어를 사용했습니다. 스크린 샷은 주소 목록을 표시하고 질문은 전자 메일 주소 목록을 설명합니다. 각 항목은 Outlook의 텍스트 영역에있는이 주소 목록에있는 "항목"으로 구성되어 있으며 사용자는 여기에 입력 할 수도 있습니다. –

관련 문제