C# 窗体的位子

低调的感觉 2008-11-19 09:58:05
我在FrmMain窗体内用鼠标点一下
希望FrmInfo弹出来,并位于鼠标点击时的左边..
用C#语言应该怎么实现啊..?
...全文
182 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
猿敲月下码 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaosanaiqinga 的回复:]
如果主窗口在屏幕的最左边呢?- -!
[/Quote]
这个好办,判断下就行了:
  Form2 fi = new Form2();
fi.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
if (MousePosition.X > fi.Size.Width)//如果鼠标的横坐标大于被打开窗体的宽就显示在左边,否则显示在右边
fi.Location = new Point(Control.MousePosition.X - fi.Width, Control.MousePosition.Y);
else
fi.Location = new Point(Control.MousePosition.X,Control.MousePosition.Y);
fi.Show();
devilli 2008-11-19
  • 打赏
  • 举报
回复
上边说的都不错
xiaosanaiqinga 2008-11-19
  • 打赏
  • 举报
回复
如果主窗口在屏幕的最左边呢?- -!
assky124 2008-11-19
  • 打赏
  • 举报
回复
取得鼠标点击的坐标 Point pt;

在弹出窗体Show之前设置位置FrmInfo.Left = pt.x - FrmInfo.Width;
FrmInfo.Top = pt.y;
别忘记FrmInfo窗体的起始位置属性设置为Manusl
bloodish 2008-11-19
  • 打赏
  • 举报
回复

private void FrmMain_Click(object sender, EventArgs e)
{
FrmInfo fi = new FrmInfo();
fi.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
fi.Location = new Point(Control.MousePosition.X - fi.Width, Control.MousePosition.Y);
fi.Show();
}


注意设置FrmInfo的StartPosition属性为Manual
RexZheng 2008-11-19
  • 打赏
  • 举报
回复

ToolStipDropDown相当封装好的弹出式容器,你使用它可以减小很多麻烦,如果你是用自己的控件根据鼠标位置弹出,那么你会发现计算是多么的繁琐,你必须要处理很多边界问题。
RexZheng 2008-11-19
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.toolstripdropdown.aspx
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.toolstripcontainer.aspx

自己做一个ToolStipDropDown,添加一个ToolStripContainer,把你的控件或者窗体放到ToolStripContainer里面。
wuyq11 2008-11-19
  • 打赏
  • 举报
回复
在mousrDown事件弹出窗体,并根据MOUSE坐标设置FORM位置

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧