如何在 Flex 文本框中创建一个全选功能?

Posted

技术标签:

【中文标题】如何在 Flex 文本框中创建一个全选功能?【英文标题】:How can I make a function to select all in a Flex textbox? 【发布时间】:2010-12-01 00:43:28 【问题描述】:

我正在尝试在 Flex 中创建一个简单的“智能”文本框组件,并且我想要一个可以在组件外部使用的函数来强制自己选择其中的所有文本。

在我的SmartTextbox.mxml

public function selectAll():void

    this.setSelection(0, this.length);

当文本框获得焦点时,我也使用此功能,如下所示:

private function onTextInput_focusIn(event:Event):void

        selectAll();

后一个,在 focusIn 事件上,正在工作。 但是,如果我尝试从外部调用该函数,例如:

在另一个组件中,texInputQuickSearch 是 SmartTextBox 组件。

if(searchModule.currentState == SearchModule.STATE_SEARCH)

    doSearch();
    searchModule.textInputQuickSearch.selectAll();              

它不会重新选择文本。

为什么会这样?

【问题讨论】:

使用调试器,或者通过放置日志,您是否看到 selectAll() 是否在 texInputQuickSearch 上下文中执行? doSearch() 中是否抛出异常? 您是否有机会将可选属性设置为 false? 使用调试器我可以看到 selectAll 已执行,但在执行后直接 selectionBeginIndex 和 selectionEndIndex 仍然与之前相同 = 没有选择。当我在 focusIn 事件上执行 selectAll 时,它会起作用 【参考方案1】:

你需要做类似的事情......

AS3:

import mx.core.UITextField;

private function initializeHandler( event:Event ):void

  var ti:TextInput = event.currentTarget as TextInput;
  var tf:UITextField = ti.mx_internal::getTextField();

  tf.alwaysShowSelection = true;

  ti.setFocus();



private function setSelection( start:int, end:int ):void

  txtName.selectionBeginIndex = start;
  txtName.selectionEndIndex = end;

MXML:

<mx:TextInput id="txtName"
  initialize="initializeHandler( event );"/>

【讨论】:

成功了! :) 谢谢,介意解释它为什么起作用吗?我不熟悉 mx_internal 和 UITextField 组件。【参考方案2】:

我的第一个猜测是,您的条件语句没有在您期望的时候评估为 TRUE。也许这是您的问题中的错字,但您有:

带有小写“s”的searchModule与带有大写“S”的SearchModule相比

如果您没有使用 Flex Builder 或其他调试环境,我会在真正的代码块中使用跟踪或其他东西来测试它(可以从 FLASH IDE 内部运行):

if(searchModule.currentState == SearchModule.STATE_SEARCH) 
    trace("made it here...I'm in");
    doSearch();
    searchModule.textInputQuickSearch.selectAll();
    trace("you should have seen it select!");

验证两个输出都打印。如果是这样,您至少知道 doSearch() 没有卡住。

【讨论】:

我使用 SearchModule.STATE_SEARCH 因为它是一个静态的状态名称。

以上是关于如何在 Flex 文本框中创建一个全选功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 wordpress 中创建自动完成文本框?

如何使用集合编辑器窗口在 GroupBox 中创建文本框?

如何在qt4的文本编辑框中创建多个选择?

如何在win32 windows中创建嵌入式文本输入框

如果用户需要向现有选项添加新选项,如何在访问中创建一个组合框,该组合框可以转换为文本框以启用书写?

如何在颤动中创建带有文本和分隔符的详细信息框