我现在想实现的功能:
在一个panel容器内有一个控件
我点击这个控件(A)时显示一个窗体(B)
这个窗体默认的显示位子是:this.Location = new Point(Control.MousePosition.X + 10, Control.MousePosition.Y + 10);但是当控件A距离显示器底部 或 显示器右边距 比较近的时候
窗体B的内容就看不到了哪位高手帮我解决下
最好附源码
谢谢了

解决方案 »

  1.   

    Show前判断位置 ....  例如FormB =_FormB =new FormB();
    _FormB.Location = new Point(Control.MousePosition.X + 10, Control.MousePosition.Y + 10);你能算出 X Y 那 X+_FormB.Width  和 Y+_FormB.Height  这两个数如果大于你控件的 Width 和Height就说明超过了.如果你控件有滚动条..那另外的减滚动条的.
      

  2.   

    用滚动条,panel1.AutoScroll还有一些相关的属性。
    或者把panel的size改大~
      

  3.   

    刻意的修改大小不好,应该根据实际的使用情况设置。如果B中放置了许多CTL那很小肯定不好。所以同意使用2楼的方法。
      

  4.   

    一般居中显示窗口就可以了,非要这样可以用ContextMenuStrip来模拟,这样就不需要自己处理位置了。
      

  5.   

    private void Form1_Shown(object sender, EventArgs e)
            {
                Rectangle r = Screen.PrimaryScreen.WorkingArea;
                Rectangle cr = new Rectangle(new Point(Control.MousePosition.X + 10, Control.MousePosition.Y + 10), this.Size);
                r.Intersect(cr);
                this.Bounds = new Rectangle(new Point(r.Right - this.Size.Width, r.Bottom - this.Size.Height), this.Size);
            }