2012-04-02 15 views
0

私はあなたが以下の画像から見ることができるよう、そのクライアント領域に画像を表示System.Windows.Forms.TextBoxから新しいコントロールを得てきました:カスタムTextBoxのイメージとテキストの重複を避けるには?

UnitTextBox

ここでのコードは次のとおりです。

public partial class UnitTextBox: TextBox { 
    public UnitTextBox() { 
     TextAlign = HorizontalAlignment.Right; 
     InitializeComponent(); 
     Controls.Add(pictureBox1); 
     pictureBox1.Location = new Point(0, 0); 
    } 
} 

いくつかの文字を追加すると、テキストが左にスクロールして画像の下に移動します。テキスト領域を埋め込む方法はありますか?

+1

コードを投稿していないため、クライアント領域にどのように画像を表示するのかは不明です。 – LarsTech

+0

こんにちは@Lars、コードが追加されました。 Thanks – stenio

答えて

0

それはあなたがそれのUserControl行った場合、あなたのために容易になるだろう、あなたが何をしようとして持つように聞こえる:Visual Studioでプロジェクトに新しい「を追加」、一般

MSDN - Inherit from the UserControl

フォームのように見える「ユーザーコントロール」あなたのイメージのパネルまたはPictureBoxを追加し、その右側にTextBoxを追加します。あなたのコントロールに合うようにフォームのサイズを調整します。いくつかのプロパティを作成してTextBoxのTextプロパティを公開し、可能であれば画像を設定してコンパイルするプロパティを表示します。コンパイルすると、User Controlは他のコントロールと同じようにToolboxに表示されます。

2

私は一度同様のことをしました。これを行う最も簡単な方法は、BradRemのようなUserControlを作成し、TextBoxと同じ背景色を持つPanelに境界線のないTextBoxを配置することです。このパネルの左側にアイコンを置きます。これで、完全なUserControlとして、左に予約領域があり、そこにアイコンがあるTextBoxとして動作します。

更新:

私は自分自身のためにこれをテストするために持っていたし、私が言ったように、ユーザーコントロールを作成しました。また、私はテキストボックスと同じ色で境界線を描くコンテナパネルへのPaintイベントを追加:

public partial class UCTextBoxWithLabel : UserControl { 
     public UCTextBoxWithLabel() { 
      InitializeComponent(); 

      pnlTextBoxWithImage.Paint += new PaintEventHandler(pnlTextBoxWithImage_Paint); 
     } 

     void pnlTextBoxWithImage_Paint(object sender, PaintEventArgs pea) { 
      ControlPaint.DrawBorder(pea.Graphics, pea.ClipRectangle, Color.FromArgb(0x7f, 0x9d, 0xb9), ButtonBorderStyle.Solid); 
     } 
    } 

を...、それは正確にあなたが望む結果のように非常に多くなります。

Screenshot of program

+0

Hiペデリーと@BradRem、私はUserControlから継承しようとしましたが、コントロールの境界線はTextBoxの通常のFixed3D境界線とは異なります。私はフォーム上に他の多くのTextBoxを持っていて、2つの境界線のスタイルを混在させるのは良いことではありません。 – stenio

+0

上記の私のソリューションで概説したように、Panelのborderプロパティを設定するだけです。 – Pedery

+0

BorderStyleプロパティをFixed3DまたはFixedSingleに設定しましたが、[ここ](http://www.b2s.it/temp/Immagine1.png)と[ここ](http://www.b2s.it/temp/Immagine2.png)。次に、ピクチャボックスとテキストボックスを新しいテキストボックスに埋め込みました。この方法では、コントロールが選択されていないときに境界線が表示されるように見えますが、フォーカスが得られたら境界線の色が変わりません! – stenio

関連する問題