我还有另一个问题..
首先考虑THIS ..
关于我早期的问题,我需要拖动一个按钮,以及与我如何拖动/移动pictureBox相关的表格。所有控件都在.NET内部
现在我正在研究这个伟大的Control, GMaps,其中适用于.NET框架中的谷歌API。
我的目标是在Google的API上创建类似infoWindow的内容。所以我通过在上面的第一个链接上创建一个新表单(充当infoWindow)来定制它。
如果您已经看过Gmaps.net,那它确实是一张地图。可拖动,平移到缩放,可以添加标记/多边形..它缺少的一件事是它的文档+我想用标记的infoWindow工具..
它只有“工具提示”,只能在其中包含字符串
例如marker.ToolTipText="Blah Blah"
关于codeplex的讨论,据说你必须创建自己的工具提示,不要只显示字符串。但我找不到一个好的例子,除了THIS继承了 contextMenu ,我无法特别使用它,因为每当我再次点击它时,它就会消失。
回到我的问题,如果你已经检查了上面的第一个链接,你就会知道我想要实现什么,现在唯一的问题是,我不能使用这个代码:
Point p = Button1.PointToScreen(Point.Empty);
p.Offset(0, (-1 * Form2.Height) - 15);
Form2.Location = p;
此代码使Form2
跟随Button1
无论走到哪里都不幸。不幸的是,在我的gMap控件上,没有按钮。里面只有标记。
请记住:此地图是一个控件
那么,如何将标记用作表单的父级,因此如果我尝试拖动地图,则会出现以下情况:
Point p = marker.PointToScreen(Point.Empty);
p.Offset(0, (-1 * Form2.Height) - 15);
Form2.Location = p;
更新我使用此代码,没有错误,无法正常工作..
void mainMap_MouseDown(object sender, MouseEventArgs e)
{
Point p = (marker.LocalPosition = PointToScreen(Point.Empty));
//Point p = button1.PointToScreen(Point.Empty); --> this gives the error that it cannot be converted
p.Offset(0, (-1 * f2.Height) - 15);
f2.Location = p;
}
答案 0 :(得分:0)
void mainMap_OnMapDrag()
{
f2.Show();
f2.Location = marker.LocalPosition;
//No offsetting..
}
LocalPosition
属性获取标记相对于屏幕的位置。唯一的问题是C#中的Dispose
函数,如果您只创建一个实例,则无法重新创建它,如果添加实例,它将创建Form2
每个像素移动。它在VB中会更好。