2009-03-13 38 views
5

Tôi đang tìm một điều khiển (hoặc đề xuất xây dựng của riêng tôi) cho ứng dụng .NET 2.0 (cửa sổ) hoạt động như hộp địa chỉ trong cửa sổ thư Outlook (ong) bên dưới)Kiểm soát .NET giống như Kiểm soát Văn bản Địa chỉ E-mail của Outlook

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

việc kiểm soát về cơ bản các công trình trong đó mỗi địa chỉ e-mail giống như một mục trong vùng văn bản. Tôi không quan tâm nhiều đến việc cho phép người dùng cũng nhập vào khu vực này như bạn có thể trong Outlook. Tôi chỉ muốn có thể thêm các chuỗi hoàn chỉnh này (địa chỉ email) vào vùng văn bản hoặc danh sách và người dùng có thể chọn chúng (nhưng không chỉnh sửa) và có thể xóa hoặc backspace thông qua danh sách để xóa toàn bộ các mục (e địa chỉ email).

Bất kỳ ai biết điều khiển ở đó thực hiện điều này? Bất kỳ đề xuất xây dựng của riêng tôi? (hoặc bất cứ ai biết những gì bạn thậm chí gọi điều khiển này vì vậy tôi biết những gì để google?)

+0

+1 Tôi cần phải làm điều gì đó tương tự (nhưng không phải địa chỉ email), bạn có nhận được bất kỳ niềm vui nào với điều này không? –

Trả lời

1

Dưới đây là một số mã để giúp bạn bắt đầu.

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

Điều này sẽ, khi bạn nhấp vào địa chỉ email, hãy chọn toàn bộ địa chỉ email. Tôi không chắc chắn nếu đây là chức năng bạn đang đi cho (nó có vẻ như nó là, mặc dù), nhưng nó sẽ giúp bạn bắt đầu. Nếu bạn muốn làm những việc khác ngoài chức năng nhấp chuột, hãy móc vào các sự kiện khác được cung cấp bởi TextBox.

+0

Tôi đã kết thúc một lộ trình tương tự. Cảm ơn bạn đã bình luận. –

-2

.NET 2.0 Windows Forms đã có, và nó chỉ đơn giản là một MaskedTextBox.

Nhưng để cung cấp hiệu lực đầu vào tối đa như địa chỉ email, bạn có thể thêm xác nhận biểu thức chính quy (Regex) khi văn bản trong MaskedTextBox bị thay đổi.

Cập nhật: Để cung cấp tùy biến hơn, chẳng hạn như địa chỉ email nhiều, bạn cũng có thể sử dụng kết hợp với MaskedTextBox RichTextBox, vì không có nguồn gốc Windows Forms thực hiện các chức năng chính xác của Outlook kiểm soát đầu vào địa chỉ email.

Tôi cũng đã thực hiện việc này, bằng cách chụp con trỏ hiện tại của người dùng khi điều khiển RichTextBox tập trung và sau đó trực tiếp che dấu đầu vào bằng cách sử dụng MaskedTextBox bổ sung được tạo khi đang chạy, được hiển thị trên đầu RichTextBox. Do đó có thể có nhiều MaskedTextBoxes khi các địa chỉ email được nhập vào nhiều hơn một.

Tôi không nói rằng đây là một nhiệm vụ dễ dàng, nhưng điều này là khả thi.

Xem này:

MSDN documentation on MaskedTextBox

+1

Điều đó hoàn toàn không giống nhau. Tôi không thấy làm thế nào bạn sẽ sử dụng một MaskedTextBox để cung cấp loại chức năng. Nó sẽ cần phải giống như một ListView do chủ sở hữu rút ra. –

+0

Bạn đã nói trong câu hỏi của mình rằng bạn muốn chức năng này trên một vùng văn bản HOẶC một danh sách. MaskedTextBox cũng là một vùng văn bản. –

+0

Tôi đã sử dụng từ "vùng văn bản" để mô tả những gì điều khiển này là trong Outlook. Ảnh chụp màn hình hiển thị danh sách địa chỉ và câu hỏi mô tả danh sách địa chỉ email, mỗi địa chỉ là "mục" hoàn chỉnh trong danh sách địa chỉ này, trong Outlook là vùng văn bản, người dùng cũng có thể nhập –

Các vấn đề liên quan