|
■No32923 (たこやき さん) に返信 > そうした場合通常は、別のコントロールのMouseMoveイベントが機能しませんが、 > それを機能させるにはどうしたらいいのでしょうか。
別のコントロールの MouseMove 発動中、元コントロール(aaa)の MouseMove も発動されねばなりませんか? それとも、その座標にあるコントロールに対してのみ MouseMove が発生すれば良いのでしょうか?
とりあえず、Capture プロパティを false にするという案。
public partial class Form1 : Form { private aaa ctrl; public Form1() { InitializeComponent(); ctrl = new aaa(); ctrl.Size = new Size(100, 100); Controls.Add(ctrl); ctrl.MouseMove += new MouseEventHandler(ctrl_MouseMove); }
void ctrl_MouseMove(object sender, MouseEventArgs e) { listBox1.Items.Insert(0, "aaa - " + e.Location.ToString()); }
private void panel1_MouseMove(object sender, MouseEventArgs e) { listBox1.Items.Insert(0, "panel1 - " + e.Location.ToString()); }
private void panel1_MouseEnter(object sender, EventArgs e) { panel1.BackColor = Color.Yellow; }
private void panel1_MouseLeave(object sender, EventArgs e) { panel1.BackColor = Color.Empty; } }
class aaa : Control { protected override void OnMouseMove(MouseEventArgs e) { base.Capture = false; //★ base.OnMouseMove(e); } protected override void OnPaintBackground(PaintEventArgs pevent) { base.OnPaintBackground(pevent); using (Pen p = new Pen(Color.Blue, 2)) { p.Alignment = PenAlignment.Inset; pevent.Graphics.DrawRectangle(p, pevent.ClipRectangle); } } }
|