miyaminn 发表于 2015-2-2 09:16:00

InputMan输入控件(GcText,GcNumber,GcDate)的高亮问题

版本:PowerTools InputMan for Windows Forms 7.0J
需求:
对于GcText,GcNumber,GcDate输入控件,TAB进入控件时,想变成全选状态;鼠标点击进入时,不是全选状态。不知能否实现?
(控件有HIGHLIGHT的属性,但是设置为TRUE后,TAB进入和鼠标进入都全选了,不满足需求)

Alice 发表于 2015-2-2 17:05:00

回复 1楼miyaminn的帖子

没有直接的接口可以实现。
你可以尝试在GotFocus事件里,判断当tab键进入,设置Hightlight为true,鼠标键进入,设置highlight为false

Leo 发表于 2015-2-2 18:10:00

不用那么麻烦,你尝试这段Code:
public Form1()
      {
            InitializeComponent();

            this.gcTextBox1.GotFocus += gcTextBox1_GotFocus;
      }

      void gcTextBox1_GotFocus(object sender, EventArgs e)
      {
            this.gcTextBox1.SelectAll();
      }

唯一的遗憾可能是鼠标点击获得Focus,光标会在末尾略闪烁一下下,如果觉得还能接受,那么这个解决方案是最简单的。

以上

miyaminn 发表于 2015-2-3 10:08:00

感谢各位版主的回答!:hjyzw:

我这边尝试了Leo 版主的方法。
GcText的时候,可以实现我想要的功能。
但是GcNumber和GcDate的话,如果使用上述方法,鼠标点进去后,还是会全选的。
这个就没办法了是么?

Leo 发表于 2015-2-3 11:31:00

回复 4楼miyaminn的帖子

这个貌似没有什么快餐式的解决方法,只能跑去处理鼠标键盘消息,记点儿Flag什么的了。

miyaminn 发表于 2015-2-4 13:16:00

多谢管理员的回答。

回头再和客户沟通一下。

Alice 发表于 2015-2-4 14:14:00

回复 6楼miyaminn的帖子

好的。如果依然有问题,请提出。

miyaminn 发表于 2015-2-4 15:31:00

再请教以下Alice版主:

如果按照你说的方法:
你可以尝试在GotFocus事件里,判断当tab键进入,设置Hightlight为true,鼠标键进入,
设置highlight为false

我怎么判断光标进入时时Tab还是鼠标呢?这个有什么方法吗?

Alice 发表于 2015-2-4 18:50:00

回复 8楼miyaminn的帖子

有关如何判断鼠标是否按下和键盘消息,是属于微软Framework下的技术,网上会有很多更详细的资料,能够帮助你。
大概说就是有MouseButtons和Keys可以获取到鼠标左键或是Keys.Tab。
页: [1]
查看完整版本: InputMan输入控件(GcText,GcNumber,GcDate)的高亮问题