[英]Drag & drop event for WinForms Form not Control
我正在搜索是否存在System.Windows.Forms.Form
类的拖放事件而没有运气...
我想知道是否有优化的方法来做到这一点...
我一直在做以下事情:
private Rectangle WinBar
{
get
{
return new Rectangle(Location.X, Location.Y, Width, 31);
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left && WinBar.Contains(e.Location))
Console.WriteLine("Being dragged!");
}
我的目的是,如果IF-statment
为true,则将调用EventHandler
。
但是,由于以下原因,目前我无法弄清楚:
Form
移到屏幕的左上角, 则会出现负值 。 我想这不是问题,但是我不知道为什么如果我将Form放在确切的角落(0, 0)
e.Location
不等于 (0, 0)
。 EventHandler
? 我已经检查了WinForms
当FormBorderStyle
属性设置为FormBorderStyle.FixedSingle
或Fixed3D
或FixedSingle
或Sizable
为31个像素,因为这个形象告诉我们:
证据是在MSPaint上选择的大小。
但是我不使用如何测量它,例如FixedToolWindow
或SizableToolWindow
。 (也许我应该使用三元条件)
因此,存在一些不确定的事情,我不知道这是否是更好的方法。 因此,任何帮助都会很棒!
提前致谢!
如果我对您的理解正确,那么您正在尝试感知整个表格何时在屏幕上移动,对吗?
如果是这样,请使用Form´s LocationChanged事件并检查Form´s Location属性以查看您的位置。
编辑添加示例:
using System;
using System.Windows.Forms;
namespace WindowsFormsTestMove
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_LocationChanged(object sender, EventArgs e)
{
var loc = this.Location;
this.Text = loc.X + " " + loc.Y;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.