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

如何通过自定义键盘实现GridView的TextEdit编辑功能?

问题:自定义键盘向GridView编辑单元格输入字符的实现

已实现基于DataTable的GridView,以及可向TextBox输入字符的自定义键盘表单,调用方式如下:

frmKeyboard k = new frmKeyboard(myTextBox);

按下键盘按键时字符会插入到TextBox中,但GridView处于编辑状态时使用的是TextEdit控件,无法直接传入TextBox,当前调用代码如下:

private void gridSelfLearning_ShownEditor(object sender, EventArgs e)
{
    GridView self = sender as GridView;
    TextBox prova = null;
    if(self.ActiveEditor is TextEdit)
    {
        frmKeyboard k = new frmKeyboard(prova);
        k.ShowDialog();
    }
}

需要解决如何正确传入对应的TextEdit控件,实现自定义键盘向GridView单元格输入字符的功能。


解决方案

方法1:直接传递TextEdit内部的TextBox

DevExpress的TextEdit控件内部包含一个实际接收输入的TextBox,可通过MaskBox属性获取。修改调用代码如下:

private void gridSelfLearning_ShownEditor(object sender, EventArgs e)
{
    GridView self = sender as GridView;
    // 直接将TextEdit转换并获取内部TextBox
    if(self.ActiveEditor is TextEdit textEdit)
    {
        TextBox innerTextBox = textEdit.MaskBox;
        frmKeyboard k = new frmKeyboard(innerTextBox);
        k.ShowDialog();
    }
}

这种方式无需修改自定义键盘frmKeyboard的原有逻辑,因为仍然传递的是TextBox类型,和之前的调用逻辑完全兼容。

方法2:扩展自定义键盘支持TextEdit

如果希望直接传递TextEdit控件给自定义键盘,可以修改frmKeyboard的构造函数,同时支持TextBox和TextEdit类型:

// 在frmKeyboard类中添加重载构造函数
private TextBox _targetInputBox;

public frmKeyboard(TextBox textBox)
{
    InitializeComponent();
    _targetInputBox = textBox;
}

public frmKeyboard(TextEdit textEdit)
{
    InitializeComponent();
    // 获取TextEdit内部的TextBox作为操作目标
    _targetInputBox = textEdit.MaskBox;
}

之后调用时可以直接传入TextEdit:

private void gridSelfLearning_ShownEditor(object sender, EventArgs e)
{
    GridView self = sender as GridView;
    if(self.ActiveEditor is TextEdit textEdit)
    {
        frmKeyboard k = new frmKeyboard(textEdit);
        k.ShowDialog();
    }
}

关键说明

自定义键盘插入字符时,操作的是_targetInputBox(即TextEdit内部的MaskBox),字符会直接同步到GridView的编辑单元格中,编辑完成后GridView会自动将值同步到绑定的DataTable数据源。


内容的提问来源于stack exchange,提问作者rosasimona di maio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:45:41