C# 仅在第一次设置特定列行的最大长度
我知道如何在datagridview的特定列中设置行的最大长度,但如果输入长度较短的字符串,则每次都会更改。我希望设置长度,使最大长度一开始只设置一次,基本上就是字符串的长度 例如,如果字符串的长度在开始时为5,那么即使我更改字符串文本,并且长度更改为3,最大长度仍然为5 这是我的密码C# 仅在第一次设置特定列行的最大长度,c#,.net,datagridview,C#,.net,Datagridview,我知道如何在datagridview的特定列中设置行的最大长度,但如果输入长度较短的字符串,则每次都会更改。我希望设置长度,使最大长度一开始只设置一次,基本上就是字符串的长度 例如,如果字符串的长度在开始时为5,那么即使我更改字符串文本,并且长度更改为3,最大长度仍然为5 这是我的密码 private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEvent
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());
}
}
创建一个布尔变量作为
var isFirstTime =true;
然后在代码中检查if(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;
}
}
}
代码中发生的事情是根据字符串的长度定义maxlength依赖项。在这种情况下,您需要将if语句添加到代码中。第一个if将包含代码的第二个if,这里是它的条件
if ((TextBox)e.Control).MaxLength >= Convert.ToInt16(this.dataGridView1.CurrentRow.Cells[3].Value.ToString())
此代码将阻止您增加maxlength的大小。
第二个if将嵌套在第二个if中,这里是它的代码
if ((TextBox)e.Control).MaxLength < Convert.ToInt16(this.dataGridView1.CurrentRow.Cells[3].Value.ToString())
这将防止maxlength缩短创建一个布尔变量,如var isFirstTime=true;然后在代码中检查if(isFirstTime),并将max length设置为false。执行同一任务的方法总是不同的,但此解决方案比我提交的解决方案更好,因为它更清晰,更重要的是,它将减少操作数(1 if而不是2 if)问题是我已经将所有字符串中的最大长度数设置为130,但有些字符串的最大长度与开头的字符串长度相同:(很抱歉,我弄糊涂了。所以您希望单元格的最大长度为130,但有些单元格的最大长度必须小于该值??无论如何,请看Elhsan的答案,它比我的答案好,它可以让您在开始之前定义最大长度(130),然后根据输入的第一个字符串的长度调整最大长度
((TextBox)e.Control).MaxLength = Convert.ToInt16(this.dataGridView1.CurrentRow.Cells[3].Value.ToString());