代码之家  ›  专栏  ›  技术社区  ›  Edward Strange

WX:单击文本字段时尝试选择值

  •  1
  • Edward Strange  · 技术社区  · 14 年前

    我们正在实现一个文本字段来进行数字输入。我们将标准wxtctrl子类化。其行为是,当用户决定编辑值时,他们会得到一个完全精确的版本,并将其选中。

    第一个尝试是重写焦点处理程序,这样当字段获得焦点时,值将显示为full并被选中。这是伟大的作品,除了案件时,你点击该领域。在这种情况下,将调用焦点处理程序并选择该值…但一段时间之后,它将被取消选择,编辑点将放在鼠标单击发生的位置。我想也许我可以覆盖SetSelection并设置一个调试点,但它似乎使用了其他方法来设置选择!我被困在了数英里的事件处理垃圾中才能找到答案…我在想鼠标按钮处理程序,但到目前为止我还没有找到任何。

    2 回复  |  直到 14 年前
        1
  •  0
  •   INS    14 年前

    我会为您的wxtctrl尝试此代码(但我不确定这是否是您想要的-聚焦并单击)

    m_textCtrl1->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( MyDialog1::LeftDown ), NULL, this );
    m_textCtrl1->Connect( wxEVT_SET_FOCUS, wxFocusEventHandler( MyDialog1::SetFocus ), NULL, this );
    
    
    void LeftDown( wxMouseEvent& event );
    void SetFocus( wxFocusEvent& event );
    

    如果您所做的操作被控件的默认(系统)处理程序覆盖,您可以稍后尝试“wxPostEvent”执行您想要的操作(在默认处理之后)。

    我还建议为此使用设计器(对于这个问题,我偷了一些wxFormBuilder生成的代码)

        2
  •  0
  •   Edward Strange    14 年前

    需要在wxapi中编写一个新组件来获得所需的行为。