在做一个C# Windows窗体程序,程序有可能要在多屏的环境下使用,现在出现了一个问题:
如果把程序主界面从主屏(一开始运行时的显示的屏幕),拖到另一块屏幕上后,进行各种操作后的弹出的模式或非模式对话框都会默认地显示在主屏上,而不是显示在程序界面所在的屏幕上,只能手动拖过去。有没有什么办法可以让这些窗口都显示到程序主界面所在的屏幕上?

解决方案 »

  1.   

    所有的弹出窗口:
    Form.StartPosition = FormStartPosition.CenterParent;
      

  2.   


    其中有一个窗口是要根据鼠标的位置来确定显示位置的,这样话FormStartPosition.CenterParent方法就不适用了。
      

  3.   


    根据鼠标位置显示的窗口:
    Form.StartPosition = FormStartPosition.Manual;
    然后将鼠标位置设置为窗口位置。
      

  4.   

    lz的问题可能是获得的鼠标的位置问题,Form.PointToScreen();将鼠标坐标转换为屏幕坐标
      

  5.   


    获得的鼠标位置是相对于控件的位置,不是相对于屏幕的位置,要做一下转换,用PointToScreen