求C#实现自定义DataGridView内嵌TextBox及绑定相关事件的代码
自定义DataGridView内嵌TextBox并绑定事件实现
要在自定义DataGridView中内嵌TextBox并绑定指定事件,推荐通过自定义DataGridView列和单元格的方式实现,这样能保证控件的可复用性,同时兼容原生DataGridView的交互逻辑。以下是完整的C#实现代码:
using System.Windows.Forms; public partial class CustomDataGridView : DataGridView { public CustomDataGridView() { InitializeComponent(); // 默认添加自定义TextBox列,也可在设计时手动添加 this.Columns.Add(new CustomTextBoxColumn()); } // 自定义TextBox列 public class CustomTextBoxColumn : DataGridViewColumn { public CustomTextBoxColumn() : base(new CustomTextBoxCell()) { } } // 自定义TextBox单元格 public class CustomTextBoxCell : DataGridViewTextBoxCell { public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) { base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle); // 获取当前编辑控件(即内嵌的TextBox) if (this.DataGridView.EditingControl is TextBox txtBox) { // 先移除原有绑定,避免重复触发事件 txtBox.TextChanged -= TxtBox_TextChanged; txtBox.Enter -= TxtBox_Enter; txtBox.KeyDown -= TxtBox_KeyDown; // 重新绑定目标事件 txtBox.TextChanged += TxtBox_TextChanged; txtBox.Enter += TxtBox_Enter; txtBox.KeyDown += TxtBox_KeyDown; } } // TextChanged事件处理逻辑 private void TxtBox_TextChanged(object sender, System.EventArgs e) { if (sender is TextBox txtBox) { // 示例:同步文本到单元格值,可替换为自定义业务逻辑 this.Value = txtBox.Text; } } // Enter事件处理逻辑 private void TxtBox_Enter(object sender, System.EventArgs e) { if (sender is TextBox txtBox) { // 示例:进入编辑时选中全部文本,可替换为自定义业务逻辑 txtBox.SelectAll(); } } // KeyDown事件处理逻辑 private void TxtBox_KeyDown(object sender, KeyEventArgs e) { if (sender is TextBox txtBox) { // 示例:按下Enter键结束编辑,可替换为自定义业务逻辑 if (e.KeyCode == Keys.Enter) { this.DataGridView.EndEdit(); } } } // 指定单元格使用的编辑控件类型 public override Type EditType => typeof(TextBox); } }
关键说明
- 自定义列与单元格:通过继承
DataGridViewColumn和DataGridViewTextBoxCell,实现对TextBox控件的完全控制,保证控件复用性。 - 事件绑定逻辑:在
InitializeEditingControl方法中完成事件绑定,先移除原有绑定可避免单元格重复编辑时事件多次触发。 - 业务扩展:三个事件的处理方法中,可根据需求替换为自定义业务代码,比如文本格式校验、快捷键响应等。
内容的提问来源于stack exchange,提问作者ankit goel
相关产品推荐
相关产品推荐

