【发布时间】:2017-09-04 01:45:41
【问题描述】:
我想要做什么。
我正在搜索是否存在 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 为真,我将调用EventHandler。
我的主要问题
但是,目前我无法弄清楚,原因如下:
- 如果我将
Form移动到屏幕的左上角负值会出现。我想这不是问题,但我不知道为什么e.Location不等于(0, 0)如果我把表格放在角落里。 - 当我的鼠标悬停在 WinForm 栏上时,什么也没有出现,但如果我将鼠标移到下方(例如向左移动 30 像素,向底部移动 50 像素),控制台就会发疯。
- 为什么这个案例没有原生
EventHandler?
为什么我使用 31 像素作为 WinBar 高度
当FormBorderStyle 属性设置为FormBorderStyle.FixedSingle 或Fixed3D 或FixedSingle 或Sizable 时,我已检查WinForms 为31 像素,如下图所示:
证据在于 MSPaint 上的选择大小。
但我不使用如何测量它,例如 FixedToolWindow 或 SizableToolWindow。 (也许我应该使用三元条件)
所以,有几个不确定的事情,我不知道这是否是更好的方法。所以,任何帮助都会很棒!
提前致谢!
【问题讨论】:
标签: c# forms winforms drag-and-drop eventhandler