我知道如何在datagridview的特定列中设置行的最大长度,但如果输入较短长度的字符串,则每次都会更改。我想设置长度,使得最大长度最初只设置一次这基本上就是字符串的长度。
例如,如果字符串的长度在开始时为5,那么即使我更改字符串文本并且长度更改为3,最大长度仍为5.
这是我的代码。
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//check if currently selected cell is cell you want
if (dataGridView1.CurrentCell == null || dataGridView1.CurrentCell.ColumnIndex != 2)
{
return;
}
if (e.Control is TextBox && !(Convert.ToBoolean(this.dataGridView1.CurrentRow.Cells[8].Value.ToString())))
{
((TextBox)e.Control).MaxLength = Convert.ToInt16(this.dataGridView1.CurrentRow.Cells[3].Value.ToString());
}
}
答案 0 :(得分:1)
创建一个布尔变量
var isFirstTime =true;
然后在你的代码中检查是否(isFirstTime)并设置你的最大长度并将此参数更改为false。
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//check if currently selected cell is cell you want
if (dataGridView1.CurrentCell == null || dataGridView1.CurrentCell.ColumnIndex != 2)
{
return;
}
if (e.Control is TextBox && !(Convert.ToBoolean(this.dataGridView1.CurrentRow.Cells[8].Value.ToString())))
{
if(isFirstTime)
{
((TextBox)e.Control).MaxLength = Convert.ToInt16(this.dataGridView1.CurrentRow.Cells[3].Value.ToString());
isFirstTime=false;
}
}
}
答案 1 :(得分:0)
您的代码中发生的是您根据字符串的长度定义maxlength基础。在这种情况下,您需要在代码中添加if语句。第一个if将包含第二个if代码,这是它的条件
if ((TextBox)e.Control).MaxLength >= Convert.ToInt16(this.dataGridView1.CurrentRow.Cells[3].Value.ToString())
此代码将阻止您增加maxlength的大小。 第二个if将嵌套在你的第二个中,如果这是它的代码。
if ((TextBox)e.Control).MaxLength < Convert.ToInt16(this.dataGridView1.CurrentRow.Cells[3].Value.ToString())
如果这是真的,你什么也不做,你应用你有的最大长度定义
((TextBox)e.Control).MaxLength = Convert.ToInt16(this.dataGridView1.CurrentRow.Cells[3].Value.ToString());
这样可以防止缩短maxlength