我在FrmMain窗体内用鼠标点一下
 希望FrmInfo弹出来,并位于鼠标点击时的左边..
 用C#语言应该怎么实现啊..?

解决方案 »

  1.   

    在mousrDown事件弹出窗体,并根据MOUSE坐标设置FORM位置
      

  2.   

    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里面。
      

  3.   


    ToolStipDropDown相当封装好的弹出式容器,你使用它可以减小很多麻烦,如果你是用自己的控件根据鼠标位置弹出,那么你会发现计算是多么的繁琐,你必须要处理很多边界问题。
      

  4.   


            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
      

  5.   

    取得鼠标点击的坐标 Point pt;在弹出窗体Show之前设置位置FrmInfo.Left = pt.x - FrmInfo.Width;
    FrmInfo.Top = pt.y;
    别忘记FrmInfo窗体的起始位置属性设置为Manusl
      

  6.   

    这个好办,判断下就行了:
      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();