我有一个动态创建的DataGridView。它包含2列。第一列是标题,第二列是允许用户输入的列。第二列是DataGridViewCells和DataGridViewComboBoxCell的混合体。 每行对DataGridViewCell中允许的字符数有限制。
我想要做的是在KeyPress上为该单元格限制可输入的字符数,如果长度大于限制则弹出一条消息。有没有人有任何示例代码。
我正在使用c#,Visual Studio 2010
答案 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