如题。我想做一个类似于PhotoShop的软件,大家可以知道,PS的工具栏是可以移动的窗口,而点击这些窗口的时候,PS的主程序并没有失去焦点(因为标题栏没有变色,正常来说,一个程序失去焦点后,标题栏会变色)。请问该怎么实现呢?
我在网上查了几个方法,都存在问题,有通过API的,也有通过重写窗体的一个方法,如下:
     private const int WS_EX_NOACTIVATE = 0x8000000;
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= WS_EX_NOACTIVATE;
                return cp;
            }
        }这种方式存在一个问题,它只在这种情况下才能成功:例如Form1重写了该方法,然后Form1运行起来后,再打开一个别的程序,例如QQ输入框,然后在QQ输入框中输入字的时候,鼠标选中Form1,QQ输入框的光标仍然可以继续输入;而且重写该方法的窗体,拖动的时候特别生硬,效果不好,和PhotoShop的工具栏拖动感觉完全不一样。当遇到下面这种情况的时候,就不好用了:Form1重写了该方法,然后在Form2中实例化一个Form1并Show出来,这个时候,Form1就会把焦点从Form2中抢走。C#绝对可以解决实现PS的那个效果,因为有个C#写的软件叫做 paint .net ,它实现的效果就非常好。希望大虾能帮忙解决这个问题啊!