none
WINFORM焦点与鼠标的问题? RRS feed

  • 问题

  • 我想做到这样:

    WINFORM下,一个文本框,一个按钮,当用鼠标点击文件框时,文本框获取焦点,也就是说文本框内出现一闪一闪的“坚”;

    这是我用鼠标点击一下按钮,按钮会高亮显示,但焦点仍在文本框内,也就是说文本框内一直出现一闪一闪的“坚”;请问怎么做啊?

    VS就做的很好,它的智能提示,当我们输入字母时,会出现选择项目,这时可用鼠标选择,但焦点仍在输入字母处;我要的就是这种效果;


    大其心,可容天下之物; 虚其心,可受天下之善;

    2014年2月13日 7:58

全部回复

  • Hi, 可以在Button的Enter事件里面重新给TextBox设置焦点:

    private void button1_Enter(object sender, EventArgs e)
    {
            textBox1.Focus();
    }

    2014年2月13日 10:02
  • 哥们,不行的;

    请你试一下就知道了,你看一下智能提示


    大其心,可容天下之物; 虚其心,可受天下之善;

    2014年2月14日 2:19
  • 你好:

    简单一点的话可以在文本框下方放置一个ListBox控件,默认隐藏,当文本框获取焦点的时候让ListBox显示并列出一些数据,这时候文本框仍然是获取焦点的状态。并且设置ListBox的相关事件,比如鼠标选中选项的时候文本框显示选中的内容,然后再让文本框重新获取焦点。

    参考一下以下博客:

    C#实现智能提示(提示补全)功能


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年2月24日 4:52
    版主
  • 谢谢哥们,你这个方法大家都能想到;

    我们每天都CODE代码,仔细看一下VS的智能提示,它能做到焦点与选中是分开的,你明白我的意思吗


    大其心,可容天下之物; 虚其心,可受天下之善;

    2014年3月3日 1:19
  • 你是想实现在鼠标点击选项的同时用键盘输入吗?如果是我的话我不会考虑这种不合理的需求,点击选项之后把焦点移回到输入的地方就足够了。VS这种效果我也不是太清楚如何实现的,没有查到相关文档。不过我猜测VS的UI编辑界面可能不在同一个线程中,所以才可以做出这种效果,也就是输入是一个线程,弹出的提示窗口是另外一个线程,两个线程的界面互不影响。而Windows Forms的Form及控件在同一个线程中,所以想做出这种效果估计比较复杂。

    你可以查一下有没有关于VS设计器本身的资料或者是源码。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2014年3月3日 3:55
    版主
  • 我想应该有相对应的API,可是找了N天了,也没有发现什么


    大其心,可容天下之物; 虚其心,可受天下之善;

    2014年3月3日 5:29
  • 我想应该有相对应的API,可是找了N天了,也没有发现什么


    大其心,可容天下之物; 虚其心,可受天下之善;

    真没有对应的 API,这需要你自己实现,还记得 Combo Box 控件不,照着这个的原理来实现,下面是一个具体的例子:

    http://www.codeproject.com/Articles/14007/Custom-ComboBox

    2014年3月3日 6:13
  • 不多说,只讨论说的按钮高亮。

    获得焦点是SetFocus();

    高亮是SetForegroundWindow();

     +SetActiveWindow()

    2014年3月6日 6:10
  • 我找到了;终于做出来了,和VS的一样;

    两个API,一个系统接口类:ImessageFilter

    搞定 


    大其心,可容天下之物; 虚其心,可受天下之善;

    2014年5月21日 15:07