如题,主要是为了防止刷新时候出现闪烁!各位贴贴代码
解决方案 »
- GSM/GPRS MODEM 短信猫发送短信 失败问题
- 关于代码规范的问题,求解决办法......
- 程序输出的文本怎么用语音读取出来
- c#编写的activex控件的属性,在页面上如何访问啊?
- 兄弟们帮想想,0-9的10个数字,生成个ComboBox,把数据库里有的去掉~
- C#中树型结构!
- 关于sqlDataAdapter.fill的问题
- 高分:用WebBrowser浏览多框架页面时,如何判断所有框架页面都已经加载完成
- 海量数据1000万条记录,什么控件可以一次批量导入,快速显示全部的数据???
- TCP/IP通讯
- GridView成功删除一行后RowDeleted事件中e.AffectedRows值为-1
- 传递参数构造连接字符串
在MouseUp事件中再将实际的控件移动到鼠标的位置。
用ControlPaint.DrawReversibleFrame 可以实现。
// the user to use the mouse to resize the rectangle. If the
// rectangle intersects a control's client rectangle, the
// control's color will change.bool isDrag = false;
Rectangle theRectangle = new Rectangle
(new Point(0, 0), new Size(0, 0));
Point startPoint;private void Form1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{ // Set the isDrag variable to true and get the starting point
// by using the PointToScreen method to convert form
// coordinates to screen coordinates.
if (e.Button==MouseButtons.Left)
{
isDrag = true;
} Control control = (Control) sender; // Calculate the startPoint by using the PointToScreen
// method.
startPoint = control.PointToScreen(new Point(e.X, e.Y));
}private void Form1_MouseMove(object sender,
System.Windows.Forms.MouseEventArgs e)
{ // If the mouse is being dragged,
// undraw and redraw the rectangle as the mouse moves.
if (isDrag) // Hide the previous rectangle by calling the
// DrawReversibleFrame method with the same parameters.
{
ControlPaint.DrawReversibleFrame(theRectangle,
this.BackColor, FrameStyle.Dashed); // Calculate the endpoint and dimensions for the new
// rectangle, again using the PointToScreen method.
Point endPoint = this.PointToScreen(new Point(e.X, e.Y));
int width = endPoint.X-startPoint.X;
int height = endPoint.Y-startPoint.Y;
theRectangle = new Rectangle(startPoint.X,
startPoint.Y, width, height); // Draw the new rectangle by calling DrawReversibleFrame
// again.
ControlPaint.DrawReversibleFrame(theRectangle,
this.BackColor, FrameStyle.Dashed);
}
}private void Form1_MouseUp(object sender,
System.Windows.Forms.MouseEventArgs e)
{ // If the MouseUp event occurs, the user is not dragging.
isDrag = false; // Draw the rectangle to be evaluated. Set a dashed frame style
// using the FrameStyle enumeration.
ControlPaint.DrawReversibleFrame(theRectangle,
this.BackColor, FrameStyle.Dashed); // Find out which controls intersect the rectangle and
// change their color. The method uses the RectangleToScreen
// method to convert the Control's client coordinates
// to screen coordinates.
Rectangle controlRectangle;
for(int i = 0; i < Controls.Count; i++)
{
controlRectangle = Controls[i].RectangleToScreen
(Controls[i].ClientRectangle);
if (controlRectangle.IntersectsWith(theRectangle))
{
Controls[i].BackColor = Color.BurlyWood;
}
} // Reset the rectangle.
theRectangle = new Rectangle(0, 0, 0, 0);
}