popup 弹窗, 不移动焦点

seeQe 2014-07-04 11:37:49
要做一个popup 样式的窗口, 当有消息来时,
就弹框出来
窗口置顶在最前面,
显示的时候不影响目前鼠标焦点.

比如打字聊天的时候,
这个FORM一显示出来焦点(光标 cursor)就移走了.
如何才能解决这个问题呢?
要的功能就是能显示出来但是不要影响我目前鼠标焦点
...全文
218 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-07-04
  • 打赏
  • 举报
回复
那就不能做成弹窗,而必须是浮动,参考页面广告
於黾 2014-07-04
  • 打赏
  • 举报
回复
如果显示的内容少,可以用菜单之类的代替,这样比较省事
於黾 2014-07-04
  • 打赏
  • 举报
回复
更进一步,开窗体之前遍历一下控件,看当前是哪个控件获得焦点 开窗体后执行focus()方法,归还焦点 如果是文本框,可以先获取selectionstart,获得焦点后设置,让光标回到原位
於黾 2014-07-04
  • 打赏
  • 举报
回复
注意,新窗体必须是show(),而不能showDialog(),否则主窗体无法获得焦点 然后要设置新窗体总在最前(属性里可以直接设置,TopMost),否则失去焦点后它会跑到后面去.
EdsionWang 2014-07-04
  • 打赏
  • 举报
回复
查一下API,有不少窗口特效的API可以利用
於黾 2014-07-04
  • 打赏
  • 举报
回复
winform,可以用this.Active();使窗体获得焦点,这样焦点就不会跑到新窗体中了 如果想某个文本框获得焦点,可以this.textbox1.Focus();
gomoku 2014-07-04
  • 打赏
  • 举报
回复

    class MyWindow : Form
    {
 
        protected override CreateParams CreateParams    //<---
        {
            get
            {
                const int WS_EX_NOACTIVATE = 0x08000000;
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= WS_EX_NOACTIVATE;
                return cp;
            }
        }
    }
引用 :
http://bbs.csdn.net/topics/380140398
seeQe 2014-07-04
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
那就不能做成弹窗,而必须是浮动,参考页面广告
是form 项目,不想用asp.net 模式, 怎么实现

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧