想象一下,我使用.NET图形类绘制一个矩形。
我怎么能分配一个事件,这样如果用户点击某个点或某个点范围,就会发生一些事情(点击事件处理程序)?
我正在通过C#和事件部分阅读CLR,我从我读过的内容中想到了这个场景。
这样的代码示例将真正提高我对C#/ .NET中事件的理解。
由于
答案 0 :(得分:5)
您可以指定Click事件处理程序来控制其表面将用于绘制矩形。 这是一个小例子: 单击矩形内部的表单时,如果单击外部,将使用红色边框绘制,将使用黑色边框绘制。
public partial class Form1 : Form
{
private Rectangle rect;
private Pen pen = Pens.Black;
public Form1()
{
InitializeComponent();
rect = new Rectangle(10, 10, Width - 30, Height - 60);
Click += Form1_Click;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawRectangle(pen, rect);
}
void Form1_Click(object sender, EventArgs e)
{
Point cursorPos = this.PointToClient(Cursor.Position);
if (rect.Contains(cursorPos))
{
pen = Pens.Red;
}
else
{
pen = Pens.Black;
}
Invalidate();
}
}
答案 1 :(得分:0)
PointToClient方法将光标坐标转换为控制相对坐标。即如果光标位于屏幕上的(screenX,screenY)位置,它可以位于(formX,formY)相对于表格左上角的位置。我们需要调用它来将光标位置带入我们矩形使用的坐标系中。
Invalidate方法使控件重绘自身。在我们的例子中,它触发OnPaint事件处理程序以使用新的边框颜色重绘矩形。