在实际的项目中总会遇到一些需要动态加载一些控件,并且加载控件的响应事件的代码。现在写一个简单的例子,主要说一下里面的一些关键点:使用鼠标在窗体上的图片框中动态的添加按钮 。动态的去加载事件,肯定是需要使用对象类动态的生成,动态事件,必须要使用委托去实现。还有一个就是“动态”的实现过程,打算鼠标点下去,在鼠标单击的位置添加上按钮。
环境:Visual Studio 2010, .Net FrameWork 3.5
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { Button btn = new Button(); btn.Size = new System.Drawing.Size(20, 20); Point Pointlocation = new Point(); //Pointlocation = new Point(e.X, e.Y); //输入坐标和输出坐标的转换 Pointlocation= pictureBox1.PointToClient(new Point(e.X, e.Y)); Pointlocation.X += pictureBox1.Parent.Location.X; Pointlocation.Y += pictureBox1.Parent.Location.Y+32; btn.Location = Pointlocation; pictureBox1.Controls.Add(btn); btn.Click += new EventHandler(delegate{Message();}); } private void Message() { MessageBox.Show("动态触发事件"); }
使用方法PointToClient(point) 将输入坐标转化。如果不转换也就是使用上面的代码会发现,窗体不是全屏的时候
原文地址:http://blog.csdn.net/wujianyouhun/article/details/42749835