C# 窗体的位子 我在FrmMain窗体内用鼠标点一下 希望FrmInfo弹出来,并位于鼠标点击时的左边.. 用C#语言应该怎么实现啊..? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在mousrDown事件弹出窗体,并根据MOUSE坐标设置FORM位置 http://msdn.microsoft.com/zh-cn/library/system.windows.forms.toolstripdropdown.aspxhttp://msdn.microsoft.com/zh-cn/library/system.windows.forms.toolstripcontainer.aspx自己做一个ToolStipDropDown,添加一个ToolStripContainer,把你的控件或者窗体放到ToolStripContainer里面。 ToolStipDropDown相当封装好的弹出式容器,你使用它可以减小很多麻烦,如果你是用自己的控件根据鼠标位置弹出,那么你会发现计算是多么的繁琐,你必须要处理很多边界问题。 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 取得鼠标点击的坐标 Point pt;在弹出窗体Show之前设置位置FrmInfo.Left = pt.x - FrmInfo.Width;FrmInfo.Top = pt.y;别忘记FrmInfo窗体的起始位置属性设置为Manusl 这个好办,判断下就行了: 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(); 如何获取 DataGridView 内容到一个字符串? 谁会使用scintillaNET控件? C#字符串转16进制问题 c#窗体 的容器中 添加 一个外部程序 如 qq , 360 智能在 容器中 显示 菜鸟问题:使用API函数SetParent之后无法显示ToolTip气泡-50分 窗口hide之后再show出来触发的是什么事件? MDI程序中,窗口能否即是子窗体,又是父窗体,该如何实现??? 两个应用程序之间的通讯,请教 新手上路,在C#中static变量为什么不能定义在函数中? 事务 如何删除Ftp主机上的文件 C#.NET DLL引用 SOS
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.toolstripcontainer.aspx自己做一个ToolStipDropDown,添加一个ToolStripContainer,把你的控件或者窗体放到ToolStripContainer里面。
ToolStipDropDown相当封装好的弹出式容器,你使用它可以减小很多麻烦,如果你是用自己的控件根据鼠标位置弹出,那么你会发现计算是多么的繁琐,你必须要处理很多边界问题。
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
FrmInfo.Top = pt.y;
别忘记FrmInfo窗体的起始位置属性设置为Manusl
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();