2011-03-13 36 views

答えて

1

MouseEnterとMouseLeaveまたはMouseHoverイベントを使用してこれを行うことができ、OnPaintイベントを使用して実際の描画を行うことができます。上記のマウスイベントや気になるイベントでPictureBoxを無効にするだけです。

+0

私はマウスのイベントを使用する必要があります – NewOrder

6

Winformsでは、コントロールの境界線の色を変更できません。ユーザーが選択したテーマによって固定されます。独自のコントロールを記述する必要がない、望みのものを得る最も簡単な方法は、パネルをピクチャボックス内に配置して、ピクチャボックスをわずかに小さくすることです。次に、パネルのBackColorを変更します。

デザイナーは、グリッドにコントロールを揃えようとするので、ちょっと試合をします。プロパティウィンドウの位置とサイズのプロパティをマウスではなく直接編集します。

+0

しかし、私は画像ボックスの正方形/フレームが赤くなるようにしたい、それは可能ですか?あなたのコメントに関しては、私はすでにテーブルレイアウトの中にピクチャボックスを置き、セルに背景色を与えました。: – NewOrder

+0

MouseDownイベントハンドラを実装し、色を設定します。 –

2

ここではsimple example(VB.NETでは、変換するのは簡単です)があります。 Passantの答えのような余分なPanelを使うことで心配する必要はありません。

3

これはいつも私がそのために使用するものとなっている:動的境界線の色を変更するには

private void pictureBox1_Paint_1(object sender, PaintEventArgs e) 
    { 
     ControlPaint.DrawBorder(e.Graphics, pictureBox1.ClientRectangle, Color.Red, ButtonBorderStyle.Solid); 
    } 

、:

境界線の色を変更するには、お使いのPictureBoxコントロールのPaintイベントハンドラからこれを呼び出しますたとえばマウスクリックイベントから、ピクチャボックスのTagプロパティを使用して色を保存し、ピクチャボックスのClickイベントを調整してそこから取得します。たとえば:

if (pictureBox1.Tag == null) { pictureBox1.Tag = Color.Red; } //Sets a default color 
    ControlPaint.DrawBorder(e.Graphics, pictureBox1.ClientRectangle, (Color)pictureBox1.Tag, ButtonBorderStyle.Solid); 

のPictureBox Clickイベントは、その後、このような何かを行くだろう:あなたが先頭にusing System.Drawing;をする必要がありますし、最後にpictureBox1.Refresh()を呼び出すことを忘れないでください

private void pictureBox1_Click(object sender, EventArgs e) 
     { 
      if ((Color)pictureBox1.Tag == Color.Red) { pictureBox1.Tag = Color.Blue; } 
      else {pictureBox1.Tag = Color.Red; } 
      pictureBox1.Refresh(); 
     } 

。楽しい!

関連する問題