【发布时间】:2019-06-27 19:30:29
【问题描述】:
我一直在尝试用文本框做一些事情。我总是需要检查 CaretIndex 属性是否低于 3。如果是,我需要将其设置回 3。我看到的唯一方法是循环遍历这段代码,而文本框有焦点。
if (textbox.CaretIndex < 3) textbox.CaretIndex = 3;
当文本框有焦点时,如何使这段代码循环?有 GotFocus 和 LostFocus 事件,但它们仅在我单击文本框时才起作用。
【问题讨论】:
-
<Trigger Property="IsFocused" Value="True"><Setter ...可能会完成这项工作,具体取决于您的要求。您能否透露一下您需要执行什么样的“代码”,以及“循环工作”是什么意思? -
@EdPlunkett 这段代码没什么特别的,只是为了检查 CaretIndex,所以我不能让它移动到另一个位置。 “循环工作”是指循环。
-
你是否认为它“特别”并不重要。我要问的是你想在这里做什么?为什么会有这个事件?你能找到一些可以达到同样目的的other事件吗?必须是鼠标键吗?特殊性不是本质。我假设代码有某种目的,并且您有某种理由使用该事件而不是其他事件。
-
@EdPlunkett 好的。当我点击文本框时,我总是需要检查这个文本框中的 CaretIndex 是否大于 3。如果小于,我需要将其设置回 3。我不能使用 TextChanged,因为我也可以移动 Caret箭头键和鼠标。这就是我需要循环的原因。
-
您尝试过
SelectionChanged事件吗? CaretIndex 不能在不更改选择的情况下更改。