限制DataGridViewCell中的字符数

时间:2016-05-16 15:32:36

标签: c# winforms datagridview

我有一个动态创建的DataGridView。它包含2列。第一列是标题,第二列是允许用户输入的列。第二列是DataGridViewCells和DataGridViewComboBoxCell的混合体。 每行对DataGridViewCell中允许的字符数有限制。

我想要做的是在KeyPress上为该单元格限制可输入的字符数,如果长度大于限制则弹出一条消息。有没有人有任何示例代码。

我正在使用c#,Visual Studio 2010

2 个答案:

答案 0 :(得分:1)

如果列类型为DataGridViewTextBoxColumn,则只需设置属性MaxInputLength即可限制输入文本的长度。

var column2 = new DataGridViewTextBoxColumn();
column2.MaxInputLength = 5;
dataGridView.Columns.Add(column2);

要手动添加KeyPress事件处理程序的代码,请尝试以下操作:

TextBox columnTextBox; // Form field

private void DataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    if (columnTextBox != null)
        columnTextBox.KeyPress -= TextBox_KeyPress;
}

private void DataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    columnTextBox = e.Control as TextBox;

    if (columnTextBox != null)
        columnTextBox.KeyPress += TextBox_KeyPress;
}

private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    var textBox = (TextBox)sender;
    // here your logic with textBox
}

DataGridView设置事件处理程序:

dataGridView.EditingControlShowing += DataGridView_EditingControlShowing;
dataGridView.CellEndEdit += DataGridView_CellEndEdit;

答案 1 :(得分:0)

我认为您可以构建自己的DatagridViewColumn类。看看这个:http://msdn.microsoft.com/en-us/library/ms180996.aspx