我已经搜索了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)
。EventHandler
?我已将WinForms
属性设置为FormBorderStyle
或FormBorderStyle.FixedSingle
或Fixed3D
或FixedSingle
为31像素时检查Sizable
这张图片告诉我们:
证据取决于 MSPaint 的选择大小。
但我没有使用如何衡量它,例如FixedToolWindow
或SizableToolWindow
。 (也许我应该使用三元条件)
所以,有几个不确定的事情,我不知道这是否是更好的方法。所以,任何帮助都会很棒!
提前致谢!
答案 0 :(得分:1)
如果我理解正确,你试图感觉整个表格何时在屏幕上移动,对吧?
如果是这样,请使用Form的LocationChanged事件并检查Form的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;
}
}
}