如何使表单看起来没有重点?
在我的代码中,表单无法聚焦,因此它始终看起来并不聚焦,而我的目标是以聚焦样式显示它。
解决方案可能是将特殊主题应用于表格,但是我不确定。
(我正在使用c#.NET)

最佳答案

当然,您的意思是说激活,表单是一个几乎从未获得焦点的顶级窗口。它的客户端控件之一可以获取它。窗口激活会影响窗口标题栏的颜色,大概是您始终希望它以“我是活跃的”颜色绘制。旧版本的Paint.NET使用此技巧作为其工具窗口。

Windows将WM_NCACTIVATE消息发送到窗口以使其显示正确的激活状态。消息的wparam指示其标题栏应使用的系统颜色,TRUE指示活动状态。您可以简单地修改消息,并始终强制使用wparam值。这是一个单行代码,请将以下代码粘贴到您的表单类中:

    protected override void WndProc(ref Message m) {
        if (m.Msg == 0x86) m.WParam = (IntPtr)1;
        base.WndProc(ref m);
    }


我不能保证这不会有任何副作用。 Afaik它仅影响绘画,例如,您仍然会获得Deactivate事件。

关于c# - 如何显示外观集中但外观不集中的形式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24118146/

10-09 09:29