主窗体mainForm 两个buttonA,buttonB
buttonA点击 弹出来窗体 FormA ,用来输入文字
buttonB点击 弹出来窗体 FormB,提示应该输入什么样的文字另外FormB上有一个buttonC,可以弹出来 FormC问题
FormC没弹出来之前,只有FormA 和FormB显示的时候,两者之间可以任意切换,操作。 把FormC弹出来之后,FormA 可以操作也就是可以输入文字,
FormB不能操作,只有等FormC关闭后才能操作。可能比较绕,有待高手。

解决方案 »

  1.   

    还真没试过。是不是formC的show 的方式的问题??
      

  2.   

    使用 .Show() 方法打开,可以切换。
    使用 .ShowDialog() 方式打开,不可以切换。变通方法,打开子窗口后,子窗口调用API EnableWindow(),事先要得到父窗口传入的 Handle,启用即可。
      

  3.   

    使用 .Show() 方法打开,可以切换。
    使用 .ShowDialog() 方式打开,不可以切换。变通方法,打开子窗口后,子窗口调用API EnableWindow(),事先要得到父窗口传入的 Handle,启用即可。 
      

  4.   

    可以实现啊。FormB不能操作,只有等FormC关闭后才能操作。
    只要将FormC用ShowDialog() 方式打开即可。其他的窗体用show的方式打开。。
      

  5.   

    用ShowDialog() FormA还能操作吗。我要的是FormA也能操作。
      

  6.   

    buttonA 点击,FormA显示,用 Show 方法,
    buttonB 点击,FormB显示,也用 Show 方法FormB中的buttonC,点击,显示FormC,用 ShowDialog 方法,此方法FormB将无法操作,FormC关闭后才可继续。[align=center]********************************************************
    本内容用 CSDN小秘书 回复
    每天回帖即可获得10分可用分!
    ********************************************************
    [/align]
      

  7.   

    没法实现showdialog()的时候其他窗体能操作。
    还是用visible属性操作吧?
      

  8.   

    对,所以现在只能用show()来实现。现在的问题是怎么控制。
      

  9.   

    有问题么?试一下、、、、[align=center]********************************************************
    本内容用 CSDN小秘书 回复
    每天回帖即可获得10分可用分!
    ********************************************************
    [/align]
      

  10.   

    呃,想到办法了,当你点第二个窗体时,把本窗体enable设置为false。
    同时设一个事件,响应窗体3的关闭,当窗体3关闭时,再将窗体2的Enable还原为true。
    这时你会发现enable设置为false会出现某些明显的东西,比如label颜色变了。这时你再开个帖子问:如何用使控件的enable属性变为false时,不该变原有的颜色。
    那时会有人给你回答的
      

  11.   


    好吧,那时我会告诉你如何控制enable的颜色问题
      

  12.   

    哈哈,兄弟你太厉害了。
    我也知道enable=false,只不过觉得这样画面太难看了。
    所以想知道有没有更好的办法。不过如果你的颜色能控制很好的话,最后再采用这种方法吧。
      

  13.   


    助人为乐,你不用再开帖了,O(∩_∩)O~,开个玩笑而已:[System.Runtime.InteropServices.DllImport("user32.dll")]
      public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int wndproc);
      [System.Runtime.InteropServices.DllImport("user32.dll")]
      public static extern int GetWindowLong(IntPtr hWnd, int nIndex);  public const int GWL_STYLE = -16;
      public const int WS_DISABLED = 0x8000000;  public static void SetControlEnabled(Control c, bool enabled)
      {
      if (enabled)
      { SetWindowLong(c.Handle, GWL_STYLE, (~WS_DISABLED) & GetWindowLong(c.Handle, GWL_STYLE)); }
      else
      { SetWindowLong(c.Handle, GWL_STYLE, WS_DISABLED + GetWindowLong(c.Handle, GWL_STYLE)); }
      }//设置enable属性需要改成
     //SetControlEnabled(lable1, false);
      

  14.   

    多谢。
    期待还有别的好的办法。不用enable=false。分可以再加。