第一次单击menuItem18的时候,myForm_MiniTalk显示在正中间,我最小化它后,再次单击menuItem18,为什么myForm_MiniTalk出现在左上角?
我怎么让它出现在最小化前的Location位置上?menuItem18_Click事件如下:
if (myForm_MiniTalk == null || myForm_MiniTalk.IsDisposed)
            {
                myForm_MiniTalk = new Form_MiniTalk ();
                this.AddOwnedForm(myForm_MiniTalk);
                myForm_MiniTalk.Visible = true;
            }
            else
            {
                myForm_MiniTalk.Activate ();
                myForm_MiniTalk.WindowState = FormWindowState.Maximized;
            }

解决方案 »

  1.   

    可以通过设置Form.DesktopBounds属性实现,具体示例如下:
    public void MoveMyForm()
     {
        // Create a Rectangle object that will be used as the bound of the form.
        Rectangle tempRect = new Rectangle(50,50,100,100);
        //  Set the bounds of the form using the Rectangle object.
        this.DesktopBounds = tempRect;
     }上面的代码示例设置窗体的大小和位置,使窗体位于距桌面左边框 50 个像素、距桌面顶部 50 个像素的位置
      

  2.   

    如果是还原的话,不需要做任何事,把如下这句
    myForm_MiniTalk.WindowState = FormWindowState.Maximized;改为
    myForm_MiniTalk.WindowState = FormWindowState.Normal;//或者保存以前的状态,然后进行恢复即可
      

  3.   

    愚翁大师:
    myForm_MinTalk是主窗口的子窗口,默认是在屏幕正中间。
    有的时候,我会拖拽myForm_MinTalk,或者最小化myForm_MinTalk,当我按照你的改成
    myForm_MiniTalk.WindowState = FormWindowState.Normal
    后,再次单击menuItem18,或者让最小化的myForm_MiniTalk恢复,它都会出现在正中间,怎么让它出现在最小化前的位置上?
      

  4.   

    你最好查查其他地方是否修改了location,
    如果你只是还原窗体状态,系统并不会自动挪动位置。
      

  5.   

    愚翁,我再问个问题,怎么达到QQ、MSN那样,有信息过来的时候,当我的
    MiniTalk任务栏上的边框会闪烁?
      

  6.   

    调用FlashWindow这个api,参看
    http://www.pinvoke.net/default.aspx/user32/FlashWindow.html你需要用一个timer进行来回切换,大致如下:
    private bool blnFlash = true;
    private void tmrTest1_Tick(object sender, System.EventArgs e)
    {
    blnFlash = !blnFlash;
    FlashWindow( this.Handle, blnFlash );
    }[DllImport("user32.dll")]
    public static extern bool FlashWindow(IntPtr hwnd, bool bInvert);