2009-03-13 7 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でできるようにユーザーがこのエリアに入力できるようにすることについてはあまり気にしません。私は、これらの完全な文字列(電子メールアドレス)をテキストエリアまたはリストに追加できるようにしたいと思います。ユーザーはそれらを選択できますが編集はできません。また、リスト全体を削除またはバックスペースで削除できますメールアドレス)。

誰かがこれを行うコントロールを知っていますか?私自身の建物のための提案? (または誰でもあなたがこのコントロールと呼んでいることを知っているので、私は何を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フォームには既にそれがあり、それは単なるMaskedTextBoxです。

しかし、電子メールアドレスなどの入力の有効性を最大限に高めるには、MaskedTextBoxのテキストが変更されたときに正規表現(正規表現)検証を追加することができます。

更新: 、このような複数の電子メールアドレスなど多くのカスタマイズを提供するには、Windowsは、Outlookのメールアドレスの入力コントロールの正確な機能の実装をフォームネイティブはありませんので、あなたはまた、リッチテキストボックスと組み合わせMaskedTextBoxを使用することができます。

また、RichTextBoxコントロールにフォーカスがあるときにユーザーの現在のカーソルをキャプチャし、実行時にその時に生成された追加のMaskedTextBoxを使用して入力を直接マスクして、RichTextBoxの上に表示します。したがって、電子メールアドレスが複数入力された場合、複数のMaskedTextBoxが存在する可能性があります。

これは簡単な作業だとは言いませんが、これは実行可能です。

MSDN documentation on MaskedTextBox

+1

これはまったく同じことではありません。私はMaskedTextBoxを使ってそのような機能を提供する方法を見ていません。それは、所有者が描いた並べ替えのListViewのようなものである必要があります。 –

+0

あなたはあなたの質問に、この機能をテキストエリアまたはリストに載せたいと言ってきました。 MaskedTextBoxもテキストエリアです。 –

+0

私は、Outlookでこのコントロールが何であるかを説明するために "テキスト領域"という言葉を使用しました。スクリーンショットにはアドレスのリストが表示され、質問には電子メールアドレスのリストが記載されています。それぞれのアドレスはOutlookのテキストエリアの並べ替えの完全な「項目」であり、ユーザーは入力することもできます –

関連する問題