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

如何在Xamarin.Forms中编程模拟触发Enter/Return回车键

Xamarin.Forms Android 平台触发Entry回车键按下的实现方案

针对你的需求,有两种可行实现方式:

方案1:直接触发Completed对应逻辑(无平台依赖,推荐优先使用)

如果你的回车键原本绑定的是Completed事件的处理逻辑,不需要真的模拟系统按键事件,直接调用对应处理方法即可,实现成本最低:

  • 先将Entry的Completed事件处理逻辑抽为独立方法
private void OnEntryCompleted(object sender, EventArgs e)
{
    var inputText = ((Entry)sender).Text;
    // 原有回车键处理逻辑,比如提交条码数据
    ProcessBarcode(inputText);
}

private void ProcessBarcode(string barcode)
{
    // 实际业务逻辑代码
}
  • 扫码成功给Entry赋值后直接调用处理方法即可
// 扫码返回结果后的执行逻辑
barcodeEntry.Text = scanResult;
barcodeEntry.Focus();
// 直接触发完成逻辑,无需模拟按键
ProcessBarcode(barcodeEntry.Text);
// 也可选择直接触发Completed事件:
// OnEntryCompleted(barcodeEntry, EventArgs.Empty);

方案2:安卓平台特定实现,真实模拟回车键按下

如果确实需要触发系统级的回车键按键事件,可以通过依赖服务调用安卓原生API实现:

  1. 首先在共享项目中定义依赖服务接口
public interface IKeyEventSimulator
{
    void SimulateEnterKey(Entry entry);
}
  1. 在安卓项目中实现该接口
[assembly: Dependency(typeof(KeyEventSimulatorAndroid))]
namespace YourAppName.Droid
{
    public class KeyEventSimulatorAndroid : IKeyEventSimulator
    {
        public void SimulateEnterKey(Entry entry)
        {
            var renderer = Platform.GetRenderer(entry);
            if (renderer?.View is Android.Widget.EditText editText)
            {
                // 构造按下、抬起两个阶段的回车键事件
                var downEvent = new KeyEvent(KeyEventActions.Down, Keycode.Enter);
                var upEvent = new KeyEvent(KeyEventActions.Up, Keycode.Enter);
                editText.DispatchKeyEvent(downEvent);
                editText.DispatchKeyEvent(upEvent);
            }
        }
    }
}
  1. 共享项目中扫码完成后调用即可
barcodeEntry.Text = scanResult;
barcodeEntry.Focus();
DependencyService.Get<IKeyEventSimulator>().SimulateEnterKey(barcodeEntry);

注意:替换代码中的YourAppName为你实际的项目命名空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:36:03