日期:2014-05-18  浏览次数:20773 次

如何实现像系统软键盘那样的顶层窗体?让窗体能始终盖住已经设置为topmost的窗体,包括失去焦点时?
我的主程序用的是一个全屏的topmost窗体。
现在需要做一个类似软键盘的东西。

软键盘窗体,我首先设置为浮动工具条窗体,不抢占焦点。
C# code

    #region 浮动工具条窗体

    private const int WS_EX_TOOLWINDOW = 0x00000080;
    private const int WS_EX_NOACTIVATE = 0x08000000;
    // 浮动工具条窗体
    protected override CreateParams CreateParams
    {
      get
      {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= (WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
        cp.Parent = IntPtr.Zero; // Keep this line only if you used UserControl
        return cp;
        //return base.CreateParams;
      }
    }

    #endregion


然后设置了topmost,由主程序打开。
但是软键盘窗体在失去焦点时又会被主窗体盖住。
同时topmost,应该是谁获得焦点谁在最前边。

如何才能像系统软键盘那样始终显示在最顶层呢?
不管有没有得到焦点,始终能盖住已设置了topmost的窗体。

------解决方案--------------------

c#中设置form属性topmost
------解决方案--------------------
如何才能像系统软键盘那样始终显示在最顶层呢?
不管有没有得到焦点,始终能盖住已设置了topmost的窗体。


主窗体拉个panel实现软键盘平时隐藏,用的时候让其显示。