You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Entry全选文本时如何调整光标位置实现超长文本尾部截断

Xamarin Entry聚焦全选时超长文本尾部显示方案

问题根因

你现有代码将光标起始位置设置为0后全选文本,系统默认会将视图滚动到光标起始位置,因此优先展示文本开头,超出控件宽度的尾部内容被截断。

代码调整

原有XAML代码无需修改

<Entry x:Name="entryA" Focused="entry_Focused"/>

修改后后台事件代码

private void entry_Focused(object sender, FocusEventArgs e)
{
    // 类型校验和空值过滤,避免空引用报错
    if (sender is not Entry currentEntry || string.IsNullOrEmpty(currentEntry.Text))
        return;
    
    // 先将光标定位到文本末尾,触发视图滚动到尾部
    currentEntry.CursorPosition = currentEntry.Text.Length;
    // 反向选中所有文本,实现全选效果且保留尾部可见
    currentEntry.SelectionLength = -currentEntry.Text.Length;
}

补充说明

  • 该代码直接复用触发事件的sender对象,不需要硬编码指定Entry控件名,同页面多个Entry可以复用同一个聚焦事件。
  • 已适配空文本、短文本场景,不会出现异常报错。
  • 如果你的项目使用的C#版本低于9.0,不支持is not语法,可以将类型校验行替换为:
    if (!(sender is Entry currentEntry) || string.IsNullOrEmpty(currentEntry.Text))
    

内容的提问来源于stack exchange,提问作者owl1929839

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:06:03